uni-popup 中 子组件 为何不触发onload
时间: 2024-03-01 15:51:08 浏览: 165
vant-ui框架的一个bug(解决切换后onload不触发)
在 `uni-popup` 中,子组件的 `onload` 事件不会被触发的原因是因为 `uni-popup` 组件在显示时,会将子组件的 DOM 移动到 `uni-popup` 组件所在的 DOM 树中,而此时子组件已经不再是第一次加载,因此 `onload` 事件不会再次触发。
如果需要在 `uni-popup` 中监听子组件的加载完成事件,可以考虑使用 `mounted` 生命周期函数来代替 `onload` 事件,因为 `mounted` 生命周期函数在组件第一次挂载时会被触发,同时在组件每次重新渲染时也会被触发,因此可以满足监听子组件加载完成事件的需求。
示例代码如下:
```vue
<template>
<uni-popup ref="popup" @show="handleShow">
<custom-component ref="child" @mounted="handleChildMounted"></custom-component>
</uni-popup>
</template>
<script>
export default {
mounted() {
// 获取 uni-popup 实例对象
const popupInstance = this.$parent;
// 监听 show 事件
popupInstance.$on('show', this.handleShow);
},
methods: {
handleShow() {
// 获取 uni-popup 的 DOM 对象
const popupDom = this.$refs.popup.$el;
// 获取子组件实例对象
const childInstance = this.$refs.child;
// 子组件初始化
childInstance.init(popupDom);
},
handleChildMounted() {
// 子组件加载完成后的操作
}
}
};
</script>
```
阅读全文