如果服务器端

时间:2017-10-30 12:46:28

标签: javascript reactjs redux react-redux

ComponentDidMount()在安装组件时触发,包括在服务器端渲染后水合时。

我在网上找到的一个解决方案是检查我们是否有州内的数据;但是这需要在每个组件上包含大量代码。还有什么其他解决方案?

  componentDidMount() {
    // if rendered initially, we already have data from the server
    // but when navigated to in the client, we need to fetch
    if (!this.state.data) {
      this.constructor.fetchData(this.props.match).then(data => {
        this.setState({ data })
      })
    }
  }

2 个答案:

答案 0 :(得分:1)

我找到了另一种解决方案。在我的Redux商店中,我保留了当前页面的URL。因此,在导航方面,我可以执行以下操作:

reduce(into:)

答案 1 :(得分:0)

只需在商店中使用一个布尔变量,我只使用一个名为" done",当服务器获取数据时将变量设置为true,在compoponentDidMount中的组件中只检查变量是否为如果是,则为true,然后不要获取数据,如下所示:

componentDidMount() {
  if(!this.props.done)
    this.props.fetchData();
}