skr*_*rln 9 components rendering reactjs
在我的实现中,我传递了一个 reactelement(至少我是这么认为的)作为道具。
我想将这个道具渲染为它自己的 React 组件,但浏览器抱怨它是一个对象。
代码澄清:
在父级:
render() {
return <SortableItem {...extraProps} item={React.cloneElement(item, extraProps)} />
}
Run Code Online (Sandbox Code Playgroud)
该item
道具包含了我想要呈现的元素SortableItem
在 SortableItem 渲染中:
我想做这样的事情:
render() {
return <props.item />
}
Run Code Online (Sandbox Code Playgroud)
当我登录时,props.item
我得到这个:
Object {$$typeof: Symbol(react.element), key: "item-5", ref: null, props:
Object, type: function…}
$$typeof:Symbol(react.element)
key:"item-5"
props:Object
ref:null
type:function _class()
Run Code Online (Sandbox Code Playgroud)
我很困惑为什么$$typeof
会说这确实是一个反应元素,但是 type 说它是 afunction _class()
并且当我登录/渲染时,浏览器说它是一个对象。
这是我在渲染时<props.item />
在浏览器中得到的错误SortableItem
Fatal Exception:Uncaught Invariant Violation: Element type is invalid:
expected a string (for built-in components) or a class/function (for
composite components) but got: object. Check the render method of
`SortableItem`.(reload cancelled)
Run Code Online (Sandbox Code Playgroud)
尝试这个,
方法一
在父级中:
render() {
return <SortableItem {...extraProps} item={<YourComponent />} />
}
Run Code Online (Sandbox Code Playgroud)
在 SortableItem 渲染中:
render() {
return {this.props.item}
}
Run Code Online (Sandbox Code Playgroud)
方法 2: 在父级中:
render() {
return <SortableItem {...extraProps} >
<YourComponent />
</SortableItem>
}
Run Code Online (Sandbox Code Playgroud)
在 SortableItem 渲染中:
render() {
return {this.props.children}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17554 次 |
最近记录: |