我收到警告“setState(...):只能更新已安装或安装的组件。”如果我离开包含此组件的屏幕,然后导航回它并尝试发送消息。我已经阅读了其他一些有类似问题的SO帖子,但它们都倾向于删除异步回调的监听器。导致此问题的代码在sendMessage()函数中,没有回调。
我不清楚为什么我的组件没有重新安装。我在这里做错了什么?
ScrollBars
答案 0 :(得分:0)
道具在React中是不可变的。您正在将prop传递给sendMessage函数,然后对其进行修改。
修改这些道具会导致组件卸载,然后使用新道具装入组件的新实例。这一切都发生在sendMessage中的最终setState之前。因此,当您到达该setState时,您正在尝试修改最近卸载的组件版本。
尝试将chatRef
加载到构造函数中的状态。然后从状态实例而不是道具中获取对chatRef的所有后续引用,并确保仅使用setState
调用来修改它。