Geo*_*tob 0 javascript vue.js vuejs2
我有一个带有空模板的Vue组件,需要监听prop更改:
// component.vue
<template>
</template>
<script>
export default {
props: ['mode'],
updated: function() {
console.log('updated!')
}
}
</script>
//parent.vue
<template>
...
<childcomponent :mode="variable"></childcomponent>
</template>
...
Run Code Online (Sandbox Code Playgroud)
现在每当父母variable
改变时,我都希望childcomponent.updated
被召唤.但是,如果在孩子的模板中使用道具,这似乎只会发生.
到目前为止,我想出的唯一解决方法是将子组件的模板设置为<div v-show="false>{{ mode }}</div>
,但这看起来真的不对吗?有没有更好的方法来解决我的问题?
我首先使用空模板的原因是因为组件与js库交互,后者自己执行一堆DOM操作.
如果您不需要创建任何DOM元素,则可以watch
使用props并使用空render
函数:
new Vue({
el: '#app',
data: {
word: ''
},
components: {
'child' : {
props: ['myprop'],
watch: {
myprop: function(n, o) {
console.log('changed to: ', n)
}
},
render: function(h) {
return h() // avoid warning message
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
<child :myprop="word"></child>
<button @click="word = 'one'">One</button>
<button @click="word = 'two'">Two</button>
<button @click="word = 'three'">Three</button>
</div>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4426 次 |
最近记录: |