Vuex-哪些数据应流经商店?

Gar*_*nzo 4 state-management vue.js vuex vuejs2

我明白家商店是以及Vuex的用途,但现在我在想:

“我实际上在商店里放什么?”

我正在建立的SPA处理大量数据。最初,我只是放入“主要”内容。但是,那是错的吗?store实际应否保留SPA的所有数据?如果我在网页上显示数据,那应该流经store吗?

Sau*_*abh 5

根据经验,数据是仅由组件之一使用,还是以一种方式传播到子组件,应该在组件级别拥有该数据就可以了。

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

文档引用:

如果您正在构建中型到大型的SPA,则很可能遇到了使您思考如何更好地处理Vue组件外部状态的情况,而Vuex将是​​您自然的下一步。Redux的作者Dan Abramov有一个很好的报价:

助焊剂库就像眼镜:您会在需要时知道它们。

您还可以参考vue-hackernews示例,在其中可以看到list用户位于vuex存储中,而组件也具有数据,而这些数据仅特定于该组件。

组件中的数据

  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
  },
Run Code Online (Sandbox Code Playgroud)

在vuex中的状态

  state: {
    activeType: null,
    itemsPerPage: 20,
    items: {/* [id: number]: Item */},
    users: {/* [id: string]: User */},
    lists: {
      top: [/* number */],
      new: [],
      show: [],
      ask: [],
      job: []
    }
  },
Run Code Online (Sandbox Code Playgroud)