首页 文章

如何在Vuex中存储非活动数据?

提问于
浏览
3

我有数据,在VueJS-application init之前加载到页面一次,并且这些数据不会一直改变,而html-page不会重新加载(经典的CGI应用程序,而不是SPA) . 数据示例:

const nonReactiveObjectWithSomeNestedData = {
  a: 'a',
  b: {
    bb: 'bb',
    cc: { ccc: 'ccc' },
    dd: ['dd1', 'dd2']
  }
}

我在几个vue组件中使用这些数据 . 将这些数据存储在Vuex命名空间模块中并使用Vuex-getters为不同的vue组件包装相同的功能会很方便 . 有没有办法存储这些数据不在vuex state (反应性不需要)但能够从vuex-module的getter访问?

PS. 目前我正在使用存储非反应性数据inside vue-instance方法,但现在还不够,我需要更多的全局数据访问(来自两个独立的根组件) .

1 回答

  • 9

    在将对象添加到商店之前冻结对象:

    Object.freeze(nonReactiveObjectWithSomeNestedData )
    

    Vue不会使冷冻物体反应 .

    Note: 你应该在进入Vuex变异/动作之前冻结对象:

    this.$store.dispatch('moduleName/setNonReactiveObject', 
        Object.freeze(nonReactiveObjectWithSomeNestedData));
    

    在内部突变功能中,有效负载参数已经被反应 .

相关问题