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