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

标签 javascript reactjs

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

相关文章:

php - 如何使用 php Rest api 从reactjs前端修复数据库中的空插入?

javascript - 使用javascript自动滑动轮播而不是内置导航

javascript - AngularJS:没有 $scope 的 ng-repeat 中的变量在其本地范围内?

javascript - 创建一个底部倾斜的圆柱体

javascript - 如何读取网站中的剪贴板数据?

javascript - io.emit 无法发送给所有客户端

ReactJS - 在为新行输入数据时,如何将单元格文本包装在 MaterialTable 中?

javascript - 如何提高动画的移动性能?

javascript - 使用 prevState setState 失败

reactjs - 如何使用鼠标滚轮进行 react 水平滚动