一、 遇到的问题
在页面触发setState状态后,就报错:实例的连接需要断开重新连接
在排除其他所有可能后,才发现创建实例的位置可能有所不妥;在將创建实例的位置移到我们hook组件外后,果然报错就不存在了;
二、问题原因分析
- 首先,在state状态改变时报错,我们应该把排错方向看向组件渲染
- 本次错误:创建实例,并且在初始化时挂载到全局变量,而在后续state状态改变后,又会触发组件重新执行,又重新创建了实例,实例的连接就需要断开重新连接
- 解决:
- 实例一般可以放在工具类里,哪里需要哪里调用更合理,也不会出现渲染影响的问题
- 我们在定义变量或常量时,应该考虑组件渲染问题,如果有影响或者不仅仅本组件使用,应该定义咋hook组件外部