对象作为 React.memo 的 React 子对象无效
Objects are not valid as a React child with React.memo
我收到以下错误
Warning: memo: The first argument must be a component. Instead received: object
Uncaught Error: Objects are not valid as a React child (found: object with keys {$$typeof, type, compare}). If you meant to render a collection of children, use an array instead.
它们在我更改此组件时发生
const Tab = () => onLastTab
? <AccountTab data={data.account} />
: <InfoTab data={data.info} />
要成为这个组件,唯一的区别是使用React.memo
const Tab = () => onLastTab
? React.memo(<TabOne data={data.one} />)
: React.memo(<TabTwo data={data.two} />)
包裹在React.memo中的那些组件肯定只是看起来像
的功能组件
const TabOne = ({data}) => (
<div>
<div className='d-flex '>
...
</div>
</div>
)
为什么会这样?我能做些什么来阻止它?
如错误消息所述,您需要将组件传递给 React.memo(),而不是对象。 TabOne
显然是一个组件名称,但您已经创建了该组件的对象并将其传递给 React.memo()。
您需要按如下方式修复您的代码:
const TabOne = ({data}) => (
<div>
<div className='d-flex '>
...
</div>
</div>
)
export default React.memo(TabOne)
const Tab = () => onLastTab
? <TabOne data={data.one} />
: <TabTwo data={data.two} />
我收到以下错误
Warning: memo: The first argument must be a component. Instead received: object
Uncaught Error: Objects are not valid as a React child (found: object with keys {$$typeof, type, compare}). If you meant to render a collection of children, use an array instead.
它们在我更改此组件时发生
const Tab = () => onLastTab
? <AccountTab data={data.account} />
: <InfoTab data={data.info} />
要成为这个组件,唯一的区别是使用React.memo
const Tab = () => onLastTab
? React.memo(<TabOne data={data.one} />)
: React.memo(<TabTwo data={data.two} />)
包裹在React.memo中的那些组件肯定只是看起来像
的功能组件const TabOne = ({data}) => (
<div>
<div className='d-flex '>
...
</div>
</div>
)
为什么会这样?我能做些什么来阻止它?
如错误消息所述,您需要将组件传递给 React.memo(),而不是对象。 TabOne
显然是一个组件名称,但您已经创建了该组件的对象并将其传递给 React.memo()。
您需要按如下方式修复您的代码:
const TabOne = ({data}) => (
<div>
<div className='d-flex '>
...
</div>
</div>
)
export default React.memo(TabOne)
const Tab = () => onLastTab
? <TabOne data={data.one} />
: <TabTwo data={data.two} />