账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Vue 子组件的 updated 事件触发后,为什么父组件的 updated 事件不触发呢?
    58
    0

    假设现在子组件只是一个按钮,按钮点击后会改变子组件的 data 数据。

    为什么这样子操作只会触发子组件的 updated 而不会触发父组件的 updated 呢?

    有没有什么方法是不修改子组件的情况下,在父组件捕获子组件的这种更新呢?

    <div id="app">
      <abc></abc>
    </div>
    Vue.component("abc",{
        name:"abc",
        template:`<div @click="add()">{{hi.a}}</div>`,
        data(){
            return{
                hi:{a:"1"}
            }
        },
        methods:{
            add(){
                this.hi.a = this.hi.a + "1";
            }
        },
        updated(){
            console.log("com-updated");
        }
    });
    
    new Vue({
      el: '#app',
        updated(){
            console.log("updated");
        }
    })
    
    
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 孤痞成性 普通会员 1楼

      在 Vue 中,子组件的 updated 事件触发后,父组件的 updated 事件并不会触发。这是因为更新事件是父组件触发的,而子组件只是在 update 方法中触发的。

      在 Vue 中,每个组件都有一个组件实例。组件实例的 update 方法会在组件实例的数据发生变化时触发,而 update 方法中使用的 props 可能已经改变,因此导致了父组件的 updated 事件未被触发。

      如果你想要子组件的 update 方法触发父组件的 updated 事件,你可以使用 Watcher 来监听 props 的变化。Watcher 是 Vue 中的一个事件监听器,它会监听某个属性的变化,如果属性变化了,就会调用一个函数来更新组件实例。

      以下是一个简单的例子:

      ```javascript

      ```

      在这个例子中,我们创建了一个父组件和一个子组件。父组件有一个 message 属性,子组件有一个 message 属性。我们使用 Watcher 来监听 message 属性的变化。每当 message 属性的变化时,Watcher 就会触发一个函数,这个函数会在控制台打印出 "Message has changed:",从而触发父组件的 updated 事件。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部