如何用vue的keepAlive实现以下业务场景
业务中存在 列表页、编辑页(新增),编辑与新增页面是一个组件,通过列表页有无id传递过来,判断是新增还是编辑页面。
我需要实现如下业务场景:
列表页 -> 选中一条数据a -> 编辑页面 -> 返回列表页 -> 进入新增页面
这个过程中最后一步,从列表页进入新增页面时,因为’新增‘、’修改‘是一个组件,且都使用的keepAlive,所以发现新增页面出现上一条修改页面展示的数据。
这种情况怎么处理呢?
我有考虑过新增的时候清空当前表单绑定的对象,还有没有比较好的办法? 或者同学们在处理这种业务场景时,是采用什么办法处理的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这种业务不需要使用keep-alive吧,keep-alive主要是用于保留组件状态或避免重新渲染。列表页有若干条数据,进入编辑页都是需要变化的,更何况新增、编辑是同一个组件,所以完全没有必要使用keep-alive。在编辑的时候传递列表页的row过去进行一下数据绑定就好了。
两个生命周期组件 actived deactived
可以这样:
新增和编辑分别是两个页面,但此两个页面用同一个组件,比如:
新增是Add.vue
编辑是Edit.vue
共用组件是Tpl.vue
Add.vue和Edit.vue都引入Tpl.vue并使用。
此时,Add.vue和Edit.vue实例化的时候,会创建不同的实例(有各自的Tpl组件实例),就不用担心出现数据被缓存的问题了。
keepAlive对于小型项目没有啥问题,但不适合大型项目。特别吃内存!最后会卡到崩溃!
新增编辑页面可以与列表页设计成父子组件,没必要独立,通过props传值是否为空区分新增还是修改