我有一个带有寄存器的页面,当我进入寄存器时,如果有很多寄存器,它们会加载,但是如果我进入页面底部,它们都会消失,并且此错误会再次出现。
>接收到寄存器列表时控制台中发生错误。
警告: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 })
})
}
答案 0 :(得分:1)
我认为您尝试更新Redux存储时会再次重新安装组件。因此,我建议您在分派操作之前先设置setState。另外,在发布完整代码的文章的另一个链接中,您正在同时执行两个redux派发操作。我不知道他们应该确切地做什么,但是我认为如果可以在一个请求中提出,那会更好。
if (res.data.items.length < 20)
this.setState({ hasMoreItems: false })
或者,您也可以在componentWillReceiveProps中调用setState。这也可以帮助您消除错误。
我希望它会有所帮助。谢谢!