Sử dụng TypeScript với React, chúng tôi không còn phải mở rộng React.Props
để trình biên dịch biết rằng tất cả các đạo cụ thành phần phản ứng có thể có con:
interface MyProps { }
class MyComponent extends React.Component<MyProps, {}> {
public render(): JSX.Element {
return <div>{this.props.children}</div>;
}
}
Tuy nhiên, có vẻ như không phải vậy đối với các thành phần chức năng không trạng thái:
const MyStatelessComponent = (props: MyProps) => {
return (
<div>{props.children}</div>
);
};
Phát ra lỗi biên dịch:
Lỗi: (102, 17) TS2339: Thuộc tính 'con' không tồn tại trên loại 'MyProps'.
Tôi đoán điều này là do thực sự không có cách nào để trình biên dịch biết rằng một hàm vani sẽ được đưa ra children
trong đối số đạo cụ.
Vì vậy, câu hỏi đặt ra là chúng ta nên sử dụng con như thế nào trong một thành phần chức năng không trạng thái trong TypeScript?
Tôi có thể quay lại cách cũ MyProps extends React.Props
, nhưng Props
giao diện được đánh dấu là không được dùng nữa và các thành phần không trạng thái không có hoặc hỗ trợ Props.ref
như tôi hiểu.
Vì vậy, tôi có thể xác định chỗ dựa children
theo cách thủ công:
interface MyProps {
children?: React.ReactNode;
}
Đầu tiên: có ReactNode
đúng loại không?
Thứ hai: Tôi phải viết con là tùy chọn ( ?
), nếu không người tiêu dùng sẽ nghĩ rằng đó children
được cho là thuộc tính của thành phần ( <MyStatelessComponent children={} />
) và gây ra lỗi nếu không được cung cấp giá trị.
Có vẻ như tôi đang thiếu một cái gì đó. Có ai có thể cung cấp một số thông tin rõ ràng về việc liệu ví dụ cuối cùng của tôi có phải là cách sử dụng các thành phần chức năng không trạng thái với trẻ em trong React không?
@types