Vuex

概念

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

  • State:渲染Vue Components
  • Mutations:定义改变State的方法
  • Actions:给mutations发出指令

使用步骤

1.npm i vuex -S
2.在src里新建store目录,在里面新建index.js
3.index.js内容:

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
	//使用严格模式后,state里面的值只允许在mutations中修改,只在开发模式中使用严格模式
	//strict: true
	state: {
		count: 0;
	},
	getters: {
	},
	mutations: {
	},
	actions: {
	},
	modules: {
	}
  1. main.js引用Vuex: import store from ‘./store/index’,即可使用Vuex来管理相应页面组件
  2. 其它组件的方法中使用this.$store.commit(方法名’[,参数])来调用Vuex的mutations中的相应的方法。即:组件本身事件调用methods方法->methods的方法调用mutations的方法->mutation的方法改变state的值->state的值重新渲染组件
    mutation的方法只能接收两个参数
    在这里插入图片描述
    mutation用来改数据,action用来改逻辑,module下又包含前面的几个东西

state里面的东西在组件里只能在computed里引用,因为computed有依赖

commit提交的两种方式

  • this.$store.commit(方法名[,参数]) mutations中直接接收state和参数即可
  • this.$store.commit({
    type: ‘方法名’,
    [n:5]
    }) mutations中需要接收state和payload,payload.n才可以调用参数

mapState:vuex提供的方法

当一个组件需要获取多个状态时候,将这些状态都声明为计算属性会有些重复和冗余。为了解决这个问题,我们可以使用 mapState 辅助函数帮助我们生成计算属性

  • 使用方法:
    1.引入:import {mapState} from ‘vuex’
    2.使用:computed: {…mapState([状态1,状态2,…])

actions:和mutations一样,但可以异步修改

使用方法

1.新建store目录,下面包含state、mutations、getters等文件,并在main.js引入store
2.设计state的组件状态,状态内容与组件的props一致
在这里插入图片描述
3.在需要引用子组件的父组件中引入vuex管理子组件

import { mapState } from 'vuex'
computed: {
	...mapState([
	 'cart'
	])

4.在要向父组件传数据的组件中调用mutations的方法传递数据

<span @click="addToCart({传递的数据})"></span>

methods: {
	...mapMutations([
	 'addToCart'
	])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值