用的TypeScript。
我定义了一个函数组件:MyView
:
type Props = {
children?: React.ReactNode;
};
function MyView(props: Props) {
const { children } = props;
return <div>{children}</div>;
}
可以正常使用:
<MyView>{<div>sss</div>}</MyView>
为了看起简洁点,我将 MyView
稍微修改了一下:
function MyView(children?: React.ReactNode) {
return <div>{children}</div>;
}
这个时候调用的地方就报错了:
报错信息:
Type '{ children: Element; }' is not assignable to type 'IntrinsicAttributes & ReactNode'.
Type '{ children: Element; }' is missing the following properties from type 'ReactPortal': key, type, props
我懵逼了,这两种写法难道不是一样的吗?怎么就报错了?前端萌新理解不了,希望有经验的大佬可以指点一下。
这里引用一下官方文档的描述 -> 将 Props 传递给组件
函数组件的
参数列表
和普通函数还是有区别的,不是我们随意定义的,而是由 React 提供的一个对象,原因也很简单,函数组件最终是由 React 去调用的,参数列表
的定义权
在React而不在开发者