2017-01-17 30 views
24

Làm cách nào để xuất một thành phần không thuần túy không trạng thái?React - Làm cách nào để xuất thành phần không có trạng thái tinh khiết

Nếu tôi sử dụng lớp này làm việc:

import React, { Component } from 'react'; 

export default class Header extends Component { 
    render(){ 
     return <pre>Header</pre> 
    } 
} 

Tuy nhiên nếu tôi sử dụng một chức năng tinh khiết Tôi không thể có được nó để làm việc.

import React, { Component } from 'react'; 
export default const Header =() => { 
    return <pre>Header</pre> 
} 

Tôi có thiếu cái gì cơ bản không?

Trả lời

40

ES6 không cho phép export default const. Bạn phải khai báo hằng số đầu tiên sau đó xuất khẩu:

const Header =() => { 
    return <pre>Header</pre> 
}; 
export default Header; 

chế này tồn tại để tránh writting export default a, b, c; mà bị cấm: chỉ có một biến có thể được xuất ra dưới dạng mặc định

+0

ah ok, cảm ơn! tốt để biết! –

9

Cũng giống như ghi chú bên. Bạn có thể về mặt kỹ thuật export default mà không khai báo biến trước tiên.

export default() => (
    <pre>Header</pre> 
) 
+6

Nhược điểm duy nhất là các thành phần được xuất theo cách này sẽ xuất hiện dưới dạng 'Không xác định' trong chrome's React devtools. – hillmark

+0

làm cách nào để bạn nhập hàm được khai báo như thế này? –

+1

@DanielThompson bạn có thể nhập nó như sau: 'import YourComponent từ './Path/to/component'' Thay thế đường dẫn bằng đường dẫn thực tế đến thành phần. Tên nhập cho xuất mặc định có thể là bất cứ thứ gì bạn muốn, tôi đã chọn 'YourComponent' trong ví dụ này. – jstwrt

0

bạn có thể làm điều đó trong hai cách

1)

// @flow 
 

 
type CompletedComponentProps = { 
 
    header: string 
 
}; 
 

 
const ComponentA = (props: ComponentAProps) => { 
 
    return <div>{props.header}</div>; 
 
}; 
 

 
export default ComponentA;

2)

// @flow 
 

 
type CompletedComponentProps = { 
 
    header: string 
 
}; 
 

 
export const ComponentA = (props: ComponentAProps) => { 
 
    return <div>{props.header}</div>; 
 
};

nếu chúng tôi sử dụng mặc định chúng tôi nhập khẩu như

này
import ComponentA from '../shared/componentA' 

nếu chúng ta không sử dụng mặc định chúng tôi nhập khẩu như

này
import { ComponentA } from '../shared/componentA' 
Các vấn đề liên quan