gpt4 book ai didi

javascript - 将多个 React 组件渲染到单个 DOM 元素中

转载 作者:搜寻专家 更新时间:2023-11-01 04:51:35 29 4
gpt4 key购买 nike

我希望将多个模态渲染到单个 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com