我希望将多个模态渲染到单个 ReactDOM 元素中。这是 React 呈现的 HTML 结构。
<body>
<div id="modal-socket"></div> // Insert multiple here
<div id="wrapper">
// Other content goes here
</div>
</body>
为什么我需要将多个组件渲染到#modal-socket 背后有一个很长的故事,但我想做一些类似于此的事情:
ReactDOM.render(<AddMeasurableModal />, document.getElementById("modal-socket"));
ReactDOM.render(<AddMeasurableModal />, document.getElementById("modal-socket"));
ReactDOM.render(<AddMeasurableModal />, document.getElementById("modal-socket"));
显然,这会在每次渲染调用时替换#modal-socket 的当前内容。所以我没有得到最终结果。嘘。
搜索并找到了一些答案,但没有一个符合我的需求。
干杯。
最佳答案
正如您在评论中所说,动态方式是这样的 在主要组件内部,您可以执行以下操作:
想象一下有一个像这样的数组:
let myArray = [
{
prop1: 'hello world'
},
{
prop1: 'Hey there!'
}
]
//Then in the render function (you can put that array into the state or something)
render(){
return (
<div>
{myArray.map((entry,index) => {
return <AddMeasurableModal key={index} {...entry} />
})}
</div>
)
}
这将创建与 myArray
变量中的条目一样多的 AddMeasurableModal
组件,并将作为 props 存储的每个属性添加到组件上(在这种情况下,每个 AddMeasurableModal
组件可以访问 this.props.prop1
值,因为 {...entry}
扩展语法)
请注意我是如何只将 myArray.map()
放入 {}
内的渲染函数中的?
React 渲染每个组件数组,而无需在渲染函数内部进行进一步配置。 Array.map()
返回一个数组。只要确保只返回有效的 react 元素!这样做时,不要忘记为每个元素添加一个 uniqe key
属性以避免警告。
编辑:在这种情况下,key
属性是数组中的当前索引,但是当从服务器获取数据时,我建议使用数据库中的 uniqe id 或其他东西来避免渲染错误。
如果你不想映射到一个数组,你可以只设置一些组件然后循环它们,创建一个组件数组并将它们放入渲染函数。
关于javascript - 将多个 React 组件渲染到单个 DOM 元素中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37378665/