Vuejs2 路由绑定不更新子组件
我很难理解组件和路由是如何协同工作的。在文档中,他们只讨论一个级别的组件。如果有多个级别,它看起来不工作 我做的 当你点击Vuejs2 路由绑定不更新子组件,vuejs2,vue-component,vue-router,Vuejs2,Vue Component,Vue Router,我很难理解组件和路由是如何协同工作的。在文档中,他们只讨论一个级别的组件。如果有多个级别,它看起来不工作 我做的 当你点击init(1)时,它用1初始化计数器;当你点击init(5)时,它用5初始化计数器。在路由组件中,我声明v-bind:init counter=“$route.params.initCounter,因此当我在counter容器中时,写入{{init counter}}是有效的,但在子组件counter中,如果我写入v-bind:init counter=“initCounte
init(1)
时,它用1初始化计数器;当你点击init(5)
时,它用5初始化计数器。在路由组件中,我声明v-bind:init counter=“$route.params.initCounter
,因此当我在counter容器中时,写入{{init counter}}
是有效的,但在子组件counter
中,如果我写入v-bind:init counter=“initCounter”
则事件无效
在本书中,我可以阅读:
使用带有参数的路由时需要注意的一点是,当用户从/user/foo
导航到/user/bar
时,相同的组件实例将被重用。由于两个路由都呈现相同的组件,这比销毁旧实例然后创建新实例更有效s还意味着组件的生命周期挂钩将不会被调用
我想知道这是否是我试图做的事情不起作用的原因。如果是这样,我真的想知道我应该如何以一种简单的方式来做。首先,是的,组件(计数器容器
及其子计数器
)只创建一次
请参见此处的日志。无论您单击链接多少次,每次只调用一次created()
s(请参见控制台)
当你点击init(1)
时,它用1初始化计数器;当你点击init(5)
时,它用5初始化计数器
不完全正确。我的意思是,单击并不总是初始化计数器变量
实际上,当您单击它们时,路由会更改,然后initCounter
(不是counter
,不是total
)会更改
在处,首先单击,因为以前没有创建组件,因此initCounter
的值将用于初始化计数器(和总计
)
但在随后的单击中,即使嵌套组件的initCounter
也会更改,但它不会影响计数器
/总计
变量,因为它们已经创建
检查.I添加了counter:{{{counter}}/initCounter:{{{initCounter}}
的显示,因此您将看到initCounter
组件中的initCounter
更改
每次更新
因此,您现在知道,initCounter
将仅用于设置计数器
/总计
,仅在首次创建组件时使用
如果您想在initCounter
更改时更新它们,解决方案是监视路由(使用watch:{'$route'(to,from){/*react here*/}
),或者更具体地说,监视initCounter
检查。每当更新initCounter
时,该计数器使用watch
并更新counter
/total