一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情。
- state : vuex 的唯一数据源。
state为单一状态树,我们通常把一些全局共用的变量放在
state中。
那就拿购物车来举例子
在商品详情中会对商品进行添加到购物车,讲选中的商品添加到购物车,按照以往如果没有vuex就需要把数据存储在本地存储里,然后等到购物车页面再去on-show的生命周期里调用里面的数据,先把本地存储的数据拿出来,赋值给购物车列表,然后显示在列表里。按照以往的做法就是这个样子 (不建议使用,复用性不高)
如果换成vuex我们只需要在state来声明商品列表(list),把购物车列表写在(list)里面,我们可以给list里添加一些字段如 店铺名称、 ID、商品名称、价格等字段,这里就是把添加购物车的商品都加到list里面,只要任何一个页面调用list数据,都可以直接响应式显示。
- Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
- 你不能直接改变 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