vuex相关

# vuex相关

# 1.vuex是什么?怎么使用?哪种场景使用它?

  • vuex是vue框架中状态管理
  • 使用:在main.js引入store,注入。新建了一个目录store,...export
  • 使用场景:单页应用中,组件之间的状态。应用实例:音乐播放、登录状态、加入购物车等等

# 2.Vuex 的 Mutation 和 Action 的区别

  • mutation--同步
  • action--异步

# 3.vuex流程

  • vuex中定义状态state,在组件内部通过this.$store.state.属性 来调用公共状态中的state
  • 修改数据,通过this.$store.dispatch来触发actions中的方法
  • actions中的每个方法都会接受一个对象 这个对象里面有一个commit方法,用来触发mutations里面的方法
  • mutations里面的方法修改state数据,会接收到2个参数 一个是store中的state,另外一个是需要传递到参数
  • 当mutations中的方法执行完毕后state会发生改变
// 定义state
const store = new Vuex.store({
    //配置项(vuex中5个属性,这里只说三个)
    //公共仓库,储存数据
    state:{
      n:10
    },
    //处理异步函数和业务逻辑,里面的参数都是函数
    actions:{

    },
    //主要用来修改state中的数据
    mutations:{

    }
})
// 挂载stroe
import store from "./store/"
new Vue({
    el: '#app',
    router,
    store,
    components: { App },
    template: '<App/>'
})
// 使用,触发方法论
<h3>{{this.$store.state.n}}</h3>
<button @click="handleClick()">修改</button>
methods:{
  handleClick(){
  this.$store.dispatch("handleAdd")   //通过dispatch调用actions里的方法
  }
}
// 提交到action
actions:{
    handleAdd({commit},params){     //第一个参数是个对象,解构赋值拿到对象中的commit;第二个参数是传递给mutations的参数
    commit("handlMutationseAdd")   //通过commit调用 mutations里的方法
  }
}
// commit到mutations,更新states数据
mutations:{
    handlMutationseAdd(state,params){     //vuex中state属性   params:commit触发时,传递过来的数据
    console.log("mutations被调用了",params)
    state.n++;
    console.log(state.n)
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
  • 流程图

Image Text