父组件通过 props 控制子组件 root 元素的 v-if,子组件生命周期执行之谜
当通过 props 中的值控制子组件 root 元素的 v-if 时,子组件的生命周期执行情况有所不同,具体表现如下:
方案 1:直接使用 v-if 控制
登录后复制
当 v-if 为 false 时,子组件的生命周期钩子函数会执行,这是因为 v-if 会销毁组件实例。切换 v-if 时,子组件会被销毁并重建,因此会再次执行钩子函数。
方案 2:通过 props 控制 root 元素
登录后复制
当 visible 为 false 时,子组件的生命周期钩子函数不会执行。这是因为子组件实例仍然存在,只是 root 元素没有渲染到页面上。实际上,组件已经初始化,只是隐藏而已。可见,visible 只是控制 root 元素的显示与隐藏,而不会影响组件实例本身。
总结一下,在方案 1 中,v-if 会影响子组件实例的生命周期,而方案 2 不会。不过,可以通过在子组件中添加一个 watch – visible 来监听到 visible 的变化。
以上就是Props 控制 v-if 对子组件生命周期的影响是怎样的?的详细内容,更多请关注【创想鸟】其它相关文章!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。