javascript - 根据vuex状态重新加载组件数据

标签 javascript vue.js vuex vue-router

我正在为几个网上商店创建一个管理面板。为了跟踪我当前正在编辑的网站,我的 vuex 状态中有一个 website 对象。可以通过在状态上调度操作的按钮来更改网站。

管理仪表板页面是显示所选网站统计信息的页面,这些统计信息的数据当前保存在页面组件本身上。

现在,当我在仪表板上切换到另一个网站时,我遇到了问题。由于仪表板的 URL 相同,因此统计信息不会改变。我想这是因为 vue-router 没有检测到 url 的更改,所以不需要重新加载组件,但是我希望在网站更改时发生这种情况。或者至少有一种方法可以知道网站已更改,以便我可以再次手动调用 ajax 源。

我几周前才开始使用 vue,但没有找到实现此目的的方法。

最佳答案

您可以订阅 Vuex 突变和操作:https://vuex.vuejs.org/api/#subscribe

在管理仪表板组件创建的钩子(Hook)上,假设您正在注入(inject) Vuex 存储,您可能会看到如下内容:

created: function() {
    this.unsubscribe = this.$store.subscribe((action, state) => {
        if (action.type === 'changeWebsite') {  // Whatever your action is called
            this.updateWebsiteData(action.payload); // Method to update component data 
        }
    });
},
beforeDestroy: function() {
    this.unsubscribe();
},

关于javascript - 根据vuex状态重新加载组件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54517326/

相关文章:

javascript - 处理postJSON的结果

vue.js - 我有一个 Electron 项目,我想与它一起使用vueJS

vue.js - 如何禁用 vuex getter 缓存?

javascript - 在过滤/搜索问题后更改输入 - VueJS

javascript - 如何通过 ID 字段从存储在 Vuex 中的对象数组中获取项目?

nuxt.js - 在 Nuxt.js 中将 Vuex 存储与服务器端同步

javascript - 具有相同 Javascript 样式的多个选择表单

javascript - 通过 promise 返回 ES6 代理时堆栈溢出

javascript - 如何检查特定列的所有行中是否包含 "abc"

javascript - 如果其中一个属性包含特定值,则删除数组元素