【问题标题】:Rendering same component twice in different pages in React在 React 的不同页面中两次渲染相同的组件
【发布时间】:2016-11-18 02:55:00
【问题描述】:
import React from "react";
import ReactDOM from "react-dom";

import Pagination from "./components/pagination.js";
import Header from "./components/header.js";
import DataBox from "./components/stats.js"

const imageHeaderIndex = document.getElementById("imageHeaderIndex");
const navBarIndex = document.getElementById("navBarIndex");

const imageHeader = document.getElementById("imageHeader");
const navBar = document.getElementById("navBar");
const dataDiv = document.getElementById("textualContent");

ReactDOM.render(<Header/>, imageHeaderIndex)
ReactDOM.render(<Pagination/>, navBarIndex)

ReactDOM.render(<Header/>, imageHeader)
ReactDOM.render(<Pagination/>, navBar)
ReactDOM.render(<DataBox url="http://localhost:8081/stats/pageInfo" pollInterval={2000}/>, dataDiv);

大家好,我对 javascript 非常陌生,并且做出了反应。我有上面的代码,我试图两次渲染相同的反应组件,但在不同的页面上。 ids = imageHeaderIndex 和 navBarIndex 属于 index.html,其余属于另一个页面(stats.html)

但是,组件不会反映在 stats.html 上。我遇到了错误: Uncaught Invariant Violation: _registerComponent(...): Target container is not a DOM element。有人知道为什么吗?

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    在使用React 时,这不是正确的方法。当您“在组件中思考”时,实际的应用程序需要结构。一种建议是容器组件,如果需要,它可以管理状态并将其传递下去。无论如何,为什么不将一个组件传递给ReactDOM.render,就像这样

    (注:我不知道app的结构,这是一个例子)

    // 一个带有id="main" 的HTML 元素,一个名为&lt;App /&gt; 的React Container:

    import React from "react";
    import ReactDOM from "react-dom";
    
    import Pagination from "./components/pagination.js";
    import Header from "./components/header.js";
    import DataBox from "./components/stats.js"
    
    const main = document.getElementById("main");
    
    
    const App = React.createClass({
      render: function() {
        return (
          <div id="main">
            <Header>
              <Pagination></Pagination>
              <Header>
                <Pagination></Pagination>
              </Header>
            </Header>
          </div>
        )
      }
    })
    
    ReactDOM.render(<App url="http://localhost:8081/stats/pageInfo" pollInterval={2000}/>, main);
    

    理想情况下,每个文件只有一个“ReactDOM.render”函数。

    【讨论】:

    • 嗨,如果我每个文件只有一个“ReactDOM.render”函数,我应该怎么做? @JordanHendrix
    猜你喜欢
    • 2020-09-05
    • 2017-01-17
    • 1970-01-01
    • 2018-01-26
    • 2020-02-05
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多