同构 react.js 无通量

isomorphic react.js without flux

我是 react.js 的新手。我想制作同构 react.js 组件。我想知道是否可以在没有通量模式的情况下制作它?现在我只有很少的组件,组件内部有 api fetch 方法,看起来这个 api 调用运行了两次 :( .

为了更清楚,我想在服务器端呈现 DOM,并希望在浏览器端处理 react.js 组件事件。

我的组件看起来像:

Class MyComponent extends React.Component{

 // my component code 
 // components events 

 render() {} 

}


if (!is_server()) {


apiFetch.my_api_call(function (result) {
    ReactDom.render(<MyComponent data={result.data}/>, document.getElementById('navigation'))
});


}else{

apiFetch.my_api_call(function (result) {
    res.status(200).send(
        ReactDOMServer.renderToString(React.createElement(MyComponent, {data: result.data}))
    );
});

创建一个父组件,其子组件将是 MyComponent

class ParentComponent extends React.Component {
  componentDidMount() {
    // make api call
    apiCall.then((data) => {
      this.setState({
        reqData : data,
      })
    })
  }

  getComponentToRender() {
    if(typeof this.state.reqData === 'undefined') {
      return false;
    } else {
      return (
        <MyComponent data={result.data}/>
      )
    }
  }

  render() {
    const componentToRender = this.getComponentToRender();
    return (
      <div>
        <componentToRender />
      </div>
    )
  }
}

现在,无论 api 调用如何,都渲染您的 ParentComponent。 ParentComponent挂载后,会自动触发MyComponent.

的渲染