setState(...)只能更新已安装或正在安装的组件

时间:2018-08-14 06:16:31

标签: reactjs react-redux

我有一个带有寄存器的页面,当我进入寄存器时,如果有很多寄存器,它们会加载,但是如果我进入页面底部,它们都会消失,并且此错误会再次出现。

>

接收到寄存器列表时控制台中发生错误。

  

警告:setState(...):只能更新已安装的或正在安装的   零件。这通常意味着您在未安装的设备上调用了setState()   零件。这是无人值守。请检查代码   RegistersList组件。

错误所在的代码的假定部分。

  fetchRegistersOnScroll() {
    const { actions, current, dispatch } = this.props
    page++

    actions.fetchRegisters(current, page)
      .then(res => {
        dispatch({ type: 'REGISTER/SCROLL', payload: res.data });

        if (res.data.items.length < 20)
          this.setState({ hasMoreItems: false })
      })
  }

1 个答案:

答案 0 :(得分:1)

我认为您尝试更新Redux存储时会再次重新安装组件。因此,我建议您在分派操作之前先设置setState。另外,在发布完整代码的文章的另一个链接中,您正在同时执行两个redux派发操作。我不知道他们应该确切地做什么,但是我认为如果可以在一个请求中提出,那会更好。

if (res.data.items.length < 20)
    this.setState({ hasMoreItems: false }) 

或者,您也可以在componentWillReceiveProps中调用setState。这也可以帮助您消除错误。

我希望它会有所帮助。谢谢!