如何监听“道具”的变化

新手上路,请多包涵

VueJs 2.0 文档 中,我找不到任何可以监听 props 更改的钩子。

VueJs 是否有类似 onPropsUpdated() 或类似的钩子?

更新

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

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

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

我将父组件接收到的 myProp 传递给 child 组件。然后 watch: {myProp: ...} 不起作用。

原文由 Amio.io 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 786
2 个回答

您可以 watch props 在 props 更改时执行一些代码:

 new Vue({
 el: '#app',
 data: {
 text: 'Hello'
 },
 components: {
 'child' : {
 template: `<p>{{ myprop }}</p>`,
 props: ['myprop'],
 watch: {
 myprop: function(newVal, oldVal) { // watch it
 console.log('Prop changed: ', newVal, ' | was: ', oldVal)
 }
 }
 }
 }
 });
 <script src="https://unpkg.com/vue/dist/vue.js"></script>

 <div id="app">
 <child :myprop="text"></child>
 <button @click="text = 'Another text'">Change text</button>
 </div>

原文由 Egor Stambakio 发布,翻译遵循 CC BY-SA 3.0 许可协议

你试过这个吗?

 watch: {
  myProp: {
    // the callback will be called immediately after the start of the observation
    immediate: true,
    handler (val, oldVal) {
      // do your stuff
    }
  }
}

https://v2.vuejs.org/v2/api/#watch

原文由 BearInBox 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题