vuex基础用法

state 存放全局数据
this.$store.state.***
this.$store.commit('addFn',参数)
this.$store.dispath('addAsync',参数)
修改 state数据需要调用 
state:{
    **:''
}
mutation中不能处理一步操作
mutation:{
    addFn(state,(参数)){
        state.** -= 参数
    }
}
组件调用
import {mapState,mapMutations,mapActions } form 'vuex'
// 计算属性存放state 值
computed:{
    ...mapState(['state内值'])
}
methods:{
    ...mapMutations([
        'mutation中定义的函数(addFn)
    ])
     ...mapMutations({
      add: 'addFn' // 将 `this.add()` 映射为 `this.$store.commit('increment')`
    })
}
组件函调用mutation 传入函数
 fatherClick(){
     store.commit('addFn')
    // store.commit('add')
 }

 

当处理值发生异步则需要调用 action

actions:{
    // 在actions中,不能直接修改 state 中数据
    // 必须通过 context.commit() 触发某个 mutation才行
    addAsync(context){
      发送的请求
      setTimeout(()=>{
        context.commit('addFn')
      },1000)
    }
}
组件调用函数
fatherClick(){
    // dispatch 函数,专门触发 action
    第一中调用方法
    this.$store.dispatch('addAsync')
}
第二种调用方法 
methods:{
    ...mapActions(['addAsync'])
}
fatherClick(){
    this.addAsync()
    // 可以直接写在按钮事件上 @click=“addAsync”
}

posted @ 2022-03-02 21:21  web格调  阅读(37)  评论(0编辑  收藏  举报