javascript - 如何监听 'props' 变化

标签 javascript vue.js vuejs2 vue-component

VueJs 2.0 docs我找不到任何可以监听 props 变化的钩子(Hook)。

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

更新

正如@wostex 建议的那样,我尝试watch 我的属性(property),但没有任何改变。然后我意识到我遇到了一个特殊情况:

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

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

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

最佳答案

您可以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>

关于javascript - 如何监听 'props' 变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44584292/

相关文章:

javascript - else if javascript 中的语句无法显示验证消息

javascript - 如何用Ember形成下表?

javascript - Sencha 中的触摸事件不会关闭键盘?

javascript - axios 获取响应未定义

javascript - 延迟添加类 - jquery

javascript - 有没有办法在 Vuetify 中获取所选 v-select 选项的索引?

javascript - 使用 Vuetify 将修饰符添加到菜单激活器中的 v-on

javascript - 如何在vue loader组件中导入JS脚本?

vuejs2 - 在类星体框架中存储全局对象的位置

docker - docker下运行vue/cli app simple index.html打开