在vite+vue的开发环境中keepAlive在热更的时候没有正确执行,新的vNode shapeFlag为772
Vue version
vue 3.2.4 vite:2.9.5
Link to minimal reproduction
这个链接无法提供,我无法在最简单的项目提供复现
Steps to reproduce
我并没有搞懂这个问题出现的原因,而且我也不认为他是一个bug。起因是当前开发的一个项目keepAlive在热更的时候去卸载旧组件的时候没有使用keepAlive的instance去调用deactive而触发的一个报错,因为是在项目中,我并不能很确切的定位这个问题。但是我试了一个简单的版本,他是可以正常工作的。当对keepAlive组件执行activate的patch的过程中,因为当前组件被热更,所以旧组件会被强制卸载,然后重新渲染新的vNode,在patch的过程中,由于是keepAlive组件,所以他执行了activate,activate内部又执行了patch,在这个patch执行过程中,出现了这个错误 vNode的shapeFlag为772,在继续执行deactive这时的parentComponent指向了当前实例的instance而不是keepAlive的instance 所以抛出了异常 导致后续的mount没有更新完成。复现链接不好提供,因为我并没有确定他出现的具体原因,在此深感抱歉。vue版本3.2.4,这个错误可能是因为我没有正确使用vue。
What is expected?
解决开发环境的这个热更新问题
What is actually happening?
parentComponent.ctx.deactivate is not a function
System Info
No response
Any additional comments?
vite:2.9.5