项目中通过pinia做状态管理,在dialog组件中使用,发现了一些问题,在此总结一下。
- store
1 | //store.ts |
- dialog
1 | //dialog |
- dialog中的子组件
1 | //child |
一些情况下,在使用弹窗的时候,需要在弹窗上加一个key,保证弹窗关闭的时候,数据重置更新。代码如下:
1 | //页面中 |
最后运行发现,每次关闭弹窗,然后打开弹窗,child组件的watch方法累加,进而导致很多问题。
问题出现原因:
useTestStore().$reset()(我也没想明白,反正和它有关)key
因为弹窗内部还未销毁的时候,弹窗本身已经销毁了,导致后续的销毁未继续执行,所以每次关闭弹窗的时候都会累加。
总而言之,就是因为store中reset方法和key的双重作用下导致了这个问题。
在保留以上功能的情况下,如何修改呢?
解决方法如下:
1 | cancel() { |