keep alive router view
时间: 2023-10-22 22:29:26 浏览: 150
引用中提到了在Vue.js中使用`<keep-alive>`和`<router-view>`时可能会出现子组件渲染两次的问题,并且这个问题只在Vue 3中出现,Vue 2暂时没有这个问题。这可能是由于动态路由渲染同一个子组件导致`<keep-alive>`失效的问题。`<keep-alive>`会缓存路由名称来缓存匹配的组件,如果路由名称不变,那么DOM不会更新,并且缓存的组件不会执行`onMounted`钩子函数,只会执行`activated`和`deactivated`钩子函数。
然而,根据引用中的说明,可以通过给组件添加`meta: {keepAlive: true/false}`来控制是否缓存该组件。在Vue组件的路由配置中,可以添加`meta`字段并设置`keepAlive`属性为`true`或`false`来实现这个目的。如果`keepAlive`为`true`,则该组件会被缓存,否则不会被缓存。
总结一下,使用`<keep-alive>`和`<router-view>`时可能会出现子组件渲染两次的问题,这是Vue 3的一个bug。但可以通过添加`meta`字段并设置`keepAlive`属性来控制组件是否被缓存。如果想要缓存组件,可以将`keepAlive`设置为`true`,否则设置为`false`。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [关于keep-alive与router-view一起使用,子组件渲染两次](https://blog.csdn.net/weixin_43914605/article/details/128238471)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [keep-alive、router-view](https://blog.csdn.net/qq_46302247/article/details/123382612)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文