VueJS 2.0 - 无法在道具更新上挂钩组件

时间:2017-06-16 08:07:19

标签: vue.js vuejs2

我需要在更新时强制重新渲染组件才能调用FB.XFBML.parse()。但是,无论我做什么,当属性更新时,我都无法调用任何生命周期钩beforeUpdate / updated。 (根据docs,它只会监听data明显不属于props的更新。

<template>
  <div>
    {{myProp}}
  </div>
</template>

<script>
  export default {
    props: ['myProp'],

    watch: {
       myprop: function(newVal, oldVal) { // watch it
            console.log('Prop changed: ', newVal, ' | was: ', oldVal)
       }           
    },

    updated(){ // never invoked},

    beforeUpdate(){ // never invoked }

  }
</script>

我可以看到,当从父组件发送不同的值时,属性channel发生了变化。

是否有用于监听props更改的挂钩?

更新

正如@chris建议的那样,我试图watch我的财产,但没有任何改变。然后我意识到我有一个特例:

<template>
    <child :my-prop="myProp"></child>
</template>

<script>
   export default {
      props: ['myProp']
   }
</script>

我将父组件收到的myProp传递给child组件。然后watch: {myProp: ...}无效。

1 个答案:

答案 0 :(得分:1)

您正在寻找的是watch

<script>
  export default {
    props: ['channel'],

    watch: {
      channel(newValue) {
        console.log(newValue)
      }
    }
  }
</script>