[英]How to reset all components in Vue.js
当路由更改时,我正在尝试重新启动组件:
beforeRouteUpdate (to, from, next) {
Object.assign(this.$data, this.$options.data())
console.log(to.query);
next();
}
但它不起作用; 它只打印console.log。 我也尝试过this.$options.data.call(this)
并apply
。
为了在更改路由查询时强制Vue重新呈现相同的组件,可以为它安装到的<router-view
分配一个key
,并将<router-view
推送到具有相同路由名或路径的页面。
例:
安装点:
<router-view
:key="$route.fullPath"
/>
组件导航(假设路线名称为blog
<router-link :to={ name: 'blog', query: { count: 10 } }>Link to the same route</router-link>
这是假设您要在导航到具有不同数据的相同页面组件时重置页面组件的数据。
如果要重置的组件不是路径组件,则可以在保存原始数据的同时使用watch
选项重置其数据。
例:
data () {
return {
initialData: {
// some initial data
},
data: {}
}
},
watch: {
'$route.fullPath': {
immediate: true, // Immediate option to call watch handler on first mount
handler () {
this.resetData()
}
}
},
methods: {
resetData () {
this.data = Object.assign({}, this.initialData)
},
},
注意,可以观察任何$route
选项,并通过next和previous参数将附加条件添加到处理程序中。
试试这个。$ router.reload()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.