生活的激流已经涌现到万丈峭壁,只要再前进一步,就会变成壮丽的瀑布。没有播种,何来收获;没有辛苦,何来成功;没有磨难,何来荣耀;没有黯淡,何来辉煌。
开发过程遇到了一个问题,就是我的 router-view 里面渲染出来的组件输入数据之后,我点击 路由视图外边的导航栏 router-link 按钮,可以实现清除 router-view 里面的数据,也就是使组件重新渲染。vm.$forceUpdate()这个方法可以使当前组件调用这个方法时,重新渲染组件。给 router-view 标签添加 key 属性将 key 绑定的值放在状态管理容器里面,通过 状态管理容器的 mutations 或者 actions 触发 key 值的变化,即可实现重新渲染组件的目的。相关实现代码如下
// store/view.js const state = { viewId: 1 }; const getters = { getViewId: state => { return state.viewId; } }; const mutations = { setViewId: (state, payload) => { state.viewId++; } }; const actions = { setViewId: (context, payload) => { context.commit("setViewId", payload); } }; export default { namespaced: true, state, getters, mutations, actions };
放置 router-view 标签的Layout 组件
触发 viewid,使 router-view 对应的路由组件刷新的地方,比如导航栏组件。
methods: { fresh() { this.$store.dispatch("view/setViewId") } }
本文Vue 如何实现手动刷新组件的方法到此结束。有时候,同样的一件事情,我们可以去安慰别人,却说服不了自己。每个人,在困惑苦闷的时候,都需要身边有朋友能够开解一下自己,其实,并非我们不懂得那些道理,只是我们特别需要听到别人把它再复述出来,以来验证和坚定那些道理的真理性。小编再次感谢大家对我们的支持!