在React中的不同页面中两次渲染相同的组件

时间:2016-07-15 02:20:48

标签: javascript reactjs

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(...):目标容器不是DOM元素。谁知道为什么?

1 个答案:

答案 0 :(得分:1)

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

(注意:我不知道应用程序的结构,这是一个例子)

//一个带有id="main"的HTML元素,一个名为<App />的React容器:

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”函数。