关于vuex及五大核心概念(用法)

核心用法:

1. mapState(读取this.$store.state中的数据)

vuex:

 state: {
    sum: 0,
    userInfo: {
      name: "小三",
      sex: "女",
      age: 18,
      like: "找男人"
    }
  },

页面中使用:

import { mapState } from "vuex";
/* 此时可直接使用this.sum读取vuex中的数据 */
computed: {
  ...mapState(["sum", "userInfo"]),
 },

2.mapGetters(可二次处理vuex中的数据展示(计算属性用法))

vuex:

 state: {
    sum: 0,
    userInfo: {
      name: "小三",
      sex: "女",
      age: 18,
      like: "找男人"
    }
  },
 getters: {
    doneTodos: (state) => {
      return state.userInfo.sex
    }
  },

页面中:

import { mapGetters } from "vuex";
  created() {
  /* 输出: 女 */
    console.log(this.doneTodos);
  },
 computed: {
    ...mapGetters(["doneTodos"]),
  },

3.1.关于mapActions的用法(mutations与actions配合使用)(修改vuex中的数据)(不传参)

vuex:

state: {
   sum: 0,
},
mutations: {
    GET_INCREMENT(state) {
      setInterval(() => {
        // 变更状态
        state.sum++
      }, 1000)
    }
  },  
 actions: {
   setIncrement({ commit }) {
     commit('GET_INCREMENT')
   }
 },

在页面里: 点击按钮 通过mapActions触发actions调用mutations中的方法
ps:具体异步方法写到mutations的方法中

 <el-button type="info" @click="Onclick">点击试试</el-button>
 
import { mapActions } from "vuex";
  methods: {
    ...mapActions({
      Onclick: "setIncrement", 
    })
  }

3.2.关于mapActions的用法(mutations与actions配合使用)(修改vuex中的数据)(两种传参方法)

vuex:

 state: {
    sum: 0,
 },
  mutations: {
    CLI_ADD(state, data) {
      state.sum = data
    },
},
 actions: {
    add({ commit }, data) {
      commit('CLI_ADD', data)
    },
  }

页面中:(第一种传输参数)

<el-button @click="number++">CLICK</el-button>
<el-button type="info" @click="Onclick(number)">点击试试</el-button>

import { mapActions } from "vuex";
data() {
    return {
      number: 0,
    };
},
methods:{
	...mapActions({
    	 Onclick: "add",
   }),
}

页面中:(第二种传输参数)

<el-button type="info" @click="Onclick(number)">点击试试</el-button>
<el-button @click="aaa">click</el-button>

import { mapActions } from "vuex";
data() {
    return {
      number: 0,
    };
},
methods:{
 	aaa() {
      this.Onclick(123);
    },
	...mapActions({
    	 Onclick: "add",
   }),
}

·········································分割线····································································

基础用法:

在页面中:
	<el-button @click="click">111111</el-button>
	 click() {
      		this.$store.dispatch("add", 20);
      		console.log(this.$store.state.sum)  //查看vuex属性的值
   	  },


在vuex中:
state: {
     	sum: 0,
   	},
mutations: {
	cliadd(state, data) {
  		state.sum += data
  	}
},
actions: {
	add(context, data) {
  		context.commit('cliadd', data)
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑豆1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值