关于vuex

目录

首先我们看一看什么是vuex

那么我们怎么使用vuex呢?

1.state:

2.mutations:

3.actions 里面只能写异步方法

首先我们看一看什么是vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

那么我们怎么使用vuex呢?

  1. 引入vuex :import Vuex from "vuex"

  2. 下载vuex :yarn add vuex@3

  3. 调用vuex中的一个install方法:Vue.use(vuex)

  4. 配置项:const store = new vuex.Store

main.js中:

import Vuex from  "vuex"
Vue.use(Vuex)

1.state:

在页面应用state的数据的方法

// 1.直接使用插值表达式{{$store.state.count}}

// 2.在计算属性中使用 // count(){ // return this.$store.state.count; // }

// 3.相当于延展到计算属性中的一个变量

// ...mapState(["count"]), // mapState内置的辅助函数

const store = new Vuex.Store({
 state:{
  count:0
 }
})
new Vue({
 render: h => h(App),
 store
}).$mount('#app')
app.vue中:
 state的数据{{$store.state.count}}
 import {mapState} from "vuex"
 computed: {//计算属性
    // count(){
    //   return this.$store.state.count;
    // },
    ...mapState(["count"]),
  },

2.mutations:

在页面上使用mutations方法的两种方式:

// 1.在methods中使用点击事件this.$store.commit("addCount")

// "addCount"为main.js mutations中同步的方法

// 或者在在methods中使用点击事件this.$store.commit("addsCount",10)

// 10为mutations中payload载荷

// 2.在methods中使用延展符...mapMutations(["extensionCount"])

// "extensionCount"为main.js mutations中同步的方法

// mapMutations为vuex内置的辅助函数

 app.vue中
点击事件
methods: {
    addCount(){
      this.$store.commit("addCount")
    },
    addsCount(){
      this.$store.commit("addsCount",10)
    },
    ...mapMutations(["extensionCount"]),
  
  }
  
  
main.js中
const store = new Vuex.Store({
 mutations:{
    //修改state状态必须是同步代码
    // addCount自定义
    addCount(state){
      state.count+=1
    },
    addsCount(state,payload){
      state.count+=payload
    },
    extensionCount(state){
      state.count+=20
    }
  },
})

3.actions 里面只能写异步方法

// context表示store的实例 // context.state获取状态 // 通过context.commit来提交mutations // context.dispatch调用其他的actions

main.js中
const store = new Vuex.Store({
  actions:{
    getAsyncCount(context){
      setTimeout(function(){
        context.commit("addsCount",123)
      },1000)

    }
  }
})
app.vue中
methods: {
  addtAsyncCount(){ 
     this.$store.dispatch("getAsyncCount")
  }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值