Javascript 从路由器设置时未更新道具
当我在路由定义中设置组件道具时,观察者不工作,视图也永远不会更新 在本例中,更新工作正常:Javascript 从路由器设置时未更新道具,javascript,vue.js,vue-router,watch,Javascript,Vue.js,Vue Router,Watch,当我在路由定义中设置组件道具时,观察者不工作,视图也永远不会更新 在本例中,更新工作正常: const Home={template:'Home'} 常数测试={ 模板:“测试:{{nb}}+1”, 道具:{nb:Number}, 方法:{ addOne(){ 这个,nb++ } } } 常量路由器=新的VueRouter({ 路线:[ {path:'/',组件:Home}, {name:'test',path:'/test/:nb',component:test,props:true} ]
const Home={template:'Home'}
常数测试={
模板:“测试:{{nb}}
+1”,
道具:{nb:Number},
方法:{
addOne(){
这个,nb++
}
}
}
常量路由器=新的VueRouter({
路线:[
{path:'/',组件:Home},
{name:'test',path:'/test/:nb',component:test,props:true}
]
})
新Vue({
路由器,
el:“#应用程序”
})
/家
/试验
计数器对象不会反应,因此不会检测到属性更改。将对象作为道具传递不会增加反应性
我刚刚更改了您示例中的一行:
props:(route)=>({counter:Vue.observable(new counter(route.params.nb))),
将对象传递到Vue.observeable
将应用反应性
注意,“应用反应性”意味着重写所有属性以使用getter和setter。在这里给出的简单示例中,这仅仅意味着值
属性,应该可以。Vue只能重写它可以看到的属性,因此隐藏在闭包中的任何数据都无法访问
const Home={template:'Home'}
常数测试={
模板:“测试:{{counter.value}}
+1',
道具:{counter:Object},
方法:{
addOne(){
这个计数器值++
console.log('new value:'+this.counter.value)
}
}
}
班级计数器{
构造函数(值){
this.value=value
}
}
常量路由器=新的VueRouter({
路线:[
{path:'/',组件:Home},
{
名称:'测试',
路径:'/test/:nb',
道具:(route)=>({counter:Vue.observable(新计数器(route.params.nb))}),
组件:测试
}
]
})
新Vue({
路由器,
el:“#应用程序”
})
/家
/试验
谢谢您的解释。我找不到关于这种行为的任何文档。对于单向数据流,正如我在帖子中所说,我在示例中这样做是为了保持简单。但在我的例子中,对象是通过IPC在后台更新的。