- 45
- 0
app.vue
<div id="app">
<keep-alive exclude="Detail">
<router-view/>
</keep-alive>
</div>
Detail.vue中的子组件Comm.vue
activated () {
window.addEventListener('scroll', this.handleScroll)
},
deactivated () {
window.removeEventListener('scroll', this.handleScroll)
}
vue中在keep-alive中exclude设置了某个组件,这个组件中的子组件不执行activated函数?
这段代码该如何修改?
- 共 0 条
- 全部回答
-
卿如红尘 普通会员 1楼
在Vue中,
keep-alive(状态管理)组件中,exclude属性用于指定要移除的组件。当exclude属性的值设置为一个组件时,该组件的子组件在activated钩子函数中的生命周期调用不会被触发。activated钩子函数用于在组件的状态发生变化时触发,通常用于处理组件的初始化、状态的更新和被激活等场景。这个钩子函数会检查是否需要重新渲染组件,如果是,则执行以下操作:-
如果组件的状态只包含
hidden状态(即isVisible属性为false),则执行以下操作: a. 清除该组件的实例:javascript this.$destroy(); -
清除该组件的
$ref,以避免在缓存中保留子组件实例,影响页面的性能:javascript this.$refs[exclude.id] = null; -
清除组件的所有依赖项(包括其子组件):
javascript this.$children = this.$children.filter(child => child !== exclude); -
根据需要重置组件的其他状态,如组件状态或数据:
javascript this.$emit('update:visible', true);
所以,当
exclude属性的值设置为某个组件时,该组件的子组件在activated钩子函数中的生命周期调用不会被触发,这是因为该组件的状态只包含hidden状态,不包含子组件的状态,且组件的实例已经被移除,所以无法重新渲染组件。此外,由于组件的实例已经被移除,因此其所有依赖项(包括其子组件)也已被移除,无需再重新计算和重置它们的其他状态。 -
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

