Vuex - 什么数据应该流经商店?

时间:2017-04-17 14:00:32

标签: vue.js vuejs2 vuex state-management

我理解商店是什么以及Vuex的目的,但现在我在想:

"我实际上在商店里放了什么?"

SPA I&#m; m building处理大量数据。最初我只是在"主要"东西。但是,那是错的吗? store是否应该为SPA保存所有数据?如果我在网页上显示数据,是否应该流经store

1 个答案:

答案 0 :(得分:5)

根据经验,数据仅由其中一个组件使用,或者它是传播给子级的一种方式,您应该可以在组件级别使用它。

但如果数据被两个以上的组件更改和访问,则可以将其置于集中状态:即vuex。

引用docs

  

如果你正在建立一个中到大规模的SPA,你很有可能   碰到让你思考如何更好地处理的情况   Vue组件之外的状态,Vuex将是​​自然的   下一步为您服务。作者丹·阿布拉莫夫(Dan Abramov)引用了一句好话   Redux:

     

Flux库就像眼镜:你知道什么时候需要它们。

您还可以参考vue-hackernews示例,其中您可以看到listsusers位于vuex商店中,而组件也有data,而仅针对该组件

组件中的

data

  data () {
    const data = {
      loading: false,
      transition: 'slide-up',
      displayedPage: isInitialRender ? Number(this.$store.state.route.params.page) || 1 : -1,
      displayedItems: isInitialRender ? this.$store.getters.activeItems : []
    }
    isInitialRender = false
    return data
  },
vuex中的

state

  state: {
    activeType: null,
    itemsPerPage: 20,
    items: {/* [id: number]: Item */},
    users: {/* [id: string]: User */},
    lists: {
      top: [/* number */],
      new: [],
      show: [],
      ask: [],
      job: []
    }
  },