请教vuex问题,提交action后,state变化了,非routerview的组件无法获取更新后的state
发布于 6 年前 作者 shuaishenk 4445 次浏览 来自 问答

如图,我想登录后展示用户名,routerview中由login切换到home,username能展示没问题。 但是header组件是公用的,不在routerview中,就无法触发computed函数了,右上角没有值 test.png test2.png test3.png test4.png

7 回复

0 vue devtools必备 1 store怎么注册的? 2 state是否变化

直接把$store.state.account.username绑定到html中 例如 <div class="username">{{$store.state.account.username}}</div> 昨天刚好碰到这个问题 vuexstate更新视图不更新

@178220709 state确实变了,alert出来后是变化的值,就是没触发更新

@LynanBreeze 试了这种方法,还是没更新

还有种可能, store声明的时候,没有定义username,所以这个属性上面没有get set的双向绑定的监听?

推荐在vuex的getter里面定义这样的获取函数,再放在组件里面的computed属性

那是因为vuex里没有深度观察,所以你vuex里的account对象里的值就算更新了也拿不到 正确的解决办法是更改account的内存地址,也就是在最后面state.account = Object.assign({},state.account)就可以了 更改了内存地址,相应的也会触发vuex里的视图更新

回到顶部