在VueJs 2.0文档中,我找不到任何可以监听道具变化的钩子。
VueJs有这样的钩子像onpropsupdate()或类似的吗?
更新
正如@wostex建议的那样,我试着观察我的财产,但没有任何变化。然后我意识到我遇到了一个特殊的情况:
<template>
<child :my-prop="myProp"></child>
</template>
<script>
export default {
props: ['myProp']
}
</script>
我将父组件接收到的myProp传递给子组件。然后手表:{myProp:…不起作用。
对一些用例的有趣观察。
如果您通过道具从存储中监视数据项,并且在同一存储中多次更改数据项,则不会监视该数据项。
但是,如果您将数据项更改分离为相同突变的多个调用,它将被监视。
This code will NOT trigger the watcher:
// Somewhere in the code:
this.$store.commit('changeWatchedDataItem');
// In the 'changeWatchedDataItem' mutation:
state.dataItem = false;
state.dataItem = true;
This code WILL trigger the watcher at each mutation:
// Somewhere in the code:
this.$store.commit('changeWatchedDataItem', true);
this.$store.commit('changeWatchedDataItem', false);
// In the 'changeWatchedDataItem' mutation:
changeWatchedDataItem(state, newValue) {
state.dataItem = newValue;
}
默认情况下,组件中的道具是反应性的,您可以在组件中的道具上设置监视,这将帮助您根据需要修改功能。下面是一个简单的代码片段来展示它是如何工作的
setup(props) {
watch(
() => props.propName,
(oldValue, newValue) => {
//Here you can add you functionality
// as described in the name you will get old and new value of watched property
},
{ deep: true },
{ immediate: true } //if you need to run callback as soon as prop changes
)
}
希望这能帮助你得到你想要的结果。
祝你有愉快的一天。
在我的情况下,我没有得到任何信息,也无法检索信息。一定要在手表内部使用试扣
我的情况
setup(props, { emit, attrs, slots, expose }) {
...
....
.....
}
.....
watch: {
isModalActive: function () {
console.log('action:: ', this.props.isModalActive) // here cause error undefined and no error information on my inspect element dunno why
}
},
所以当我试图安慰别人的时候
watch: {
isModalActive: function () {
console.log('action:: ') // this work and printed
console.log('action:: ', this.props.isModalActive)
}
},