Vuex - State

111 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情

- state : vuex 的唯一数据源。

state为单一状态树,我们通常把一些全局共用的变量放在state中。

那就拿购物车来举例子
在商品详情中会对商品进行添加到购物车,讲选中的商品添加到购物车,按照以往如果没有vuex就需要把数据存储在本地存储里,然后等到购物车页面再去on-show的生命周期里调用里面的数据,先把本地存储的数据拿出来,赋值给购物车列表,然后显示在列表里。按照以往的做法就是这个样子 (不建议使用,复用性不高)

如果换成vuex我们只需要在state来声明商品列表(list),把购物车列表写在(list)里面,我们可以给list里添加一些字段如 店铺名称ID商品名称价格等字段,这里就是把添加购物车的商品都加到list里面,只要任何一个页面调用list数据,都可以直接响应式显示。

image.png

image.png

  1. Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
  2. 你不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。
export default new Vuex.Store({
    // 存储数据
    state: {
        number:1,
        // 选中列表(存放选中的id)
        list: [
            {
                id: 1,
                name: "yi",
                status:true,
                num:10,
            },{
                id: 2,
                name: "er",
                status:false,
                num:12,
            },{
                id: 3,
                name: "san",
                status:true,
                num:15,
            },{
                id: 4,
                name: "si",
                status:false,
                num:3,
            },{
                id: 5,
                name: "wu",
                status:true,
                num:5,
            },{
                id: 6,
                name: "liu",
                status:false,
                num:6,
            },
            
        ]
    },
    
})

这里的state主要用来定义我们所需要管理的数组、对象、字符串等等。这里存储了购物车的列表,里面放了ID、商品名称、是否全选、和数量等数据。(这里写的是一个虚拟的数据),只有在这里定义了,在getters中才能获取对你定义的这个数组做出相应的计算。

下一篇写getters