想知道组件销毁的意义所在还有什么时候销毁?销毁函数怎么写

#1

如题,非常感谢 想知道组件销毁的意义所在还有什么时候销毁?销毁函数怎么写

#2

写单页应用的时候,需要销毁的场景很常见。
比如:
/path1 下的component,全局添加了事件处理器

window.addEventListener( document.body , ‘click’ , ()=>{console.log(1)} ) 

如果跳转到路由/path2的话,你在当前页面点击,也会发现控制台输出1;这就不符合预期了,我想要的是,不同的页面,应该就像传统的不同页面不同的js脚本,事件绑定不互相影响。

所以你应该在path1的component的componentWillUnmount生命周期方法中,添加解绑的操作。

ps:上述为了简单明了,采用箭头函数,实际上是解绑不了的,所以你定义的处理函数,解绑的时候应该能拿到引用。

2 Likes
#3

组件是什么,为什么要销毁?

react组件是jsx + state,销毁组件要做的事情就是销毁和这个组件有关的状态、事件。

销毁事件:
有一个很常用的例子,有一个组件使用了window.addEventListener(‘scroll’, function),在这个组件卸载的时候,我们可能不需要这个方法,那么就可以在销毁函数执行remove操作。

销毁状态:
组件内部的状态会随着组件的卸载自动初始化,但是如果把state保存到redux中,就需要在组件卸载的时候手动销毁state。

2 Likes