Reactjs 为什么可以';我不能在这里使用HOC吗?

Reactjs 为什么可以';我不能在这里使用HOC吗?,reactjs,ecmascript-6,Reactjs,Ecmascript 6,为了清楚起见,我省略了以下代码: const TestWrapper = (Component) => { return function() { return <Component /> } } const TestWrapper=(组件)=>{ 返回函数(){ 返回 } } 这就是所谓的: const b = <Breadcrumbs items={ crumbs } /> const ConnectedAppHeader = TestWr

为了清楚起见,我省略了以下代码:

const TestWrapper = (Component) => {
  return function() {
    return <Component />
  }
}
const TestWrapper=(组件)=>{
返回函数(){
返回
}
}
这就是所谓的:

const b = <Breadcrumbs items={ crumbs } />

const ConnectedAppHeader = TestWrapper(b);

return (
   <div>
     <ConnectedAppHeader />
   </div>
)
const b=
const ConnectedAppHeader=TestWrapper(b);
返回(
)
我有一个名为
Breadcrumbs
的组件,它带有一个道具。如果与
一起使用,则运行正常。但是,当我尝试将其包装到
TestWrapper
中时,我得到了以下错误:

React.createElement:类型无效--应为字符串(对于内置组件)或类/函数(对于复合组件),但应为Get:object

很明显,我的渲染类型搞错了,但我被卡住了。如何使这个HOC工作?

HOC期望组件函数作为参数,而不是组件函数的实际实例。当您要传递
Breadcrumbs
函数/类本身时,您正试图传递
Breadcrumbs
元素。这是因为您正在
TestWrapper
中创建一个新元素——不能从元素中创建元素,必须从实际的类或函数中创建元素

例如,您可以将包装修改为:

const TestWrapper = (Component, items) => {
  return function() {
    return <Component items={items} />
  }
}
HOC期望组件函数作为参数,而不是组件函数的实际实例。当您要传递
Breadcrumbs
函数/类本身时,您正试图传递
Breadcrumbs
元素。这是因为您正在
TestWrapper
中创建一个新元素——不能从元素中创建元素,必须从实际的类或函数中创建元素

例如,您可以将包装修改为:

const TestWrapper = (Component, items) => {
  return function() {
    return <Component items={items} />
  }
}

好的,我有点理解,你能把它的语法贴出来吗please@Rory贴了一个例子。非常感谢。从你的评论和代码我现在明白了。我会记下你的答案好吧,我有点明白,你能把你的语法贴出来吗please@Rory贴了一个例子。非常感谢。从你的评论和代码我现在明白了。我会记下你的答案