在已卸载的组件上发生React Native setState()警告

时间:2016-06-01 16:48:57

标签: reactjs react-native

我收到警告“setState(...):只能更新已安装或安装的组件。”如果我离开包含此组件的屏幕,然后导航回它并尝试发送消息。我已经阅读了其他一些有类似问题的SO帖子,但它们都倾向于删除异步回调的监听器。导致此问题的代码在sendMessage()函数中,没有回调。

我不清楚为什么我的组件没有重新安装。我在这里做错了什么?

ScrollBars

1 个答案:

答案 0 :(得分:0)

道具在React中是不可变的。您正在将prop传递给sendMessage函数,然后对其进行修改。

修改这些道具会导致组件卸载,然后使用新道具装入组件的新实例。这一切都发生在sendMessage中的最终setState之前。因此,当您到达该setState时,您正在尝试修改最近卸载的组件版本。

尝试将chatRef加载到构造函数中的状态。然后从状态实例而不是道具中获取对chatRef的所有后续引用,并确保仅使用setState调用来修改它。