Vue 实现手动刷新组件

开发过程遇到了一个问题,就是我的 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 组件


Layout.vue

触发 viewid,使 router-view 对应的路由组件刷新的地方,比如导航栏组件。

methods: {

    fresh() {

        this.$store.dispatch("view/setViewId")

    }

}

你可能感兴趣的:(Vue 实现手动刷新组件)