React JS-如何更好地将React组件添加到ReactDOM

时间:2020-05-28 22:01:55

标签: reactjs react-redux

如果我通过id直接在文档正文中插入React组件可以吗?

还是最好将其包装在DIV中?

index.js

ReactDOM.render(
    <Provider store={store()}>
        <App/>
    </Provider>,
    document.querySelector("#root")
)

index.html

<body class="d-flex flex-column h-100" id="root">
  <noscript>You need to enable JavaScript to run this app.</noscript>
</body>

2 个答案:

答案 0 :(得分:2)

出于以下三个原因,我不建议使用body作为虚拟DOM的根:

  1. body通常包含脚本标签,其中可能包含您的React逻辑。重新渲染body意味着您还需要照顾好所有脚本,并且每次重新渲染body时,都需要重新加载所有脚本,这效率不高,更不用说了重新加载React代码的副作用(我没有任何经验可以证明)。避免这种情况的唯一方法是将所有脚本放入headerwhich is not recommended中。
  2. 如果您需要修改body,例如如果使用Bootstrap modal,则添加“ modal-open”类,还有其他解决方案,例如using React's hook或专用于更新主体的事件监听器。
  3. 通常,Web应用程序产品不仅使用DOM操作器脚本,还使用其他用于商业目的的脚本(例如Google Analytics(分析),Analytics.js,Google Map)。有些应用包含超过1个独立运行的React脚本。在那些情况下,脚本逻辑应该分开并且不要耦合在一起。如果有2个React脚本,则不应嵌套2个根节点,以避免不必要的重新渲染。

答案 1 :(得分:0)

在我的html页面中,我只使用一个<div id="root">

之后:

ReactDOM.render(element, document.getElementById('root'));

做所有的魔术。

参考:https://reactjs.org/docs/rendering-elements.html