【发布时间】:2019-04-23 11:59:53
【问题描述】:
我试图创建一个容器组件,它可能会随着时间的推移而改变其内部组件。
class Container extends React.Component {
constructor(props) {
super(props)
this.state = { content: new FooComponent() }
}
render() {
return <div>
{ this.state.content }
</div>
}
}
我收到如下错误:
对象作为 React 子对象无效(找到:带有键 {props, context, refs, updater, state} 的对象)。如果您打算渲染一组子项,请改用数组。
我试过{ [this.state.component] },但得到同样的错误。
您是否可以将来自this.state 的组件放入从render() 返回的 JSX 中?如果没有,你如何实现一个容器?我正在考虑创建一个类似于 iOS 的 UINavigationController 的容器,我可以在其中推送和弹出堆栈中的组件,而只有顶部的组件呈现到屏幕上。
【问题讨论】:
-
new 将返回一个对象 (
this) 而不是 react 组件,使用这个:content: <FooComponent />,稍后将转换为content: React.createElement(FooComponent, .....),但是将 react 组件存储在 state 中不是一个好主意,最好将相关信息存储在状态中以呈现该组件。查看MDN Doc,了解有关new 运算符如何工作 的更多详细信息。
标签: reactjs