Vue系列二十五:vuex-简介

一、简介
 github 站点:https://github.com/vuejs/vuex
 在线文档:https://vuex.vuejs.org/zh-cn/
 简单来说:对 vue 应用中多个组件的共享状态进行集中式的管理(读/写)。
二、状态自管理应用
 state: 驱动应用的数据源。
 view: 以声明方式将 state 映射到视图。
 actions: 响应在 view 上的用户输入导致的状态变化(包含 n 个更新状态的方法)。
在这里插入图片描述
三、多组件共享状态的问题
 1、多个视图依赖于同一状态。
 2、来自不同视图的行为需要变更同一状态。
 3、以前的解决办法。
  a. 将数据以及操作数据的行为都定义在父组件。
  b. 将数据以及操作数据的行为传递给需要的各个子组件(有可能需要多级传递)。
 4、vuex 就是用来解决这个问题的。
在这里插入图片描述
四、vuex 核心概念和 API
1、state
(1)、 vuex 管理的状态对象。
(2)、它应该是唯一的。

    const state={ 
    	xxx:initValue 
    }

2、mutations
(1)、包含多个直接更新 state 的方法(回调函数)的对象。
(2)、谁来触发:action 中的 commit(‘mutation 名称’) 。
(3)、只能包含同步的代码, 不能写异步代码。

    const mutations={ 
	     yyy(state,{data1}){ 
	     	// 更新 state 的某个属性 
	     } 
     }

3、actions
(1)、包含多个事件回调函数的对象。
(2)、通过执行:commit()来触发 mutation 的调用, 间接更新 state。
(3)、谁来触发:组件中:$store.dispatch('action 名称',data1) //'zzz'
(4)、可以包含异步代码(定时器,ajax)

    const actions={ 
	    zzz({commit,state},data1){ 
	    	commit('yyy',{data1}) 
	    } 
    }

4、getters
(1)、包含多个计算属性(get)的对象。
(2)、谁来读取:组件中:$store.getters.xxx

    const getters={ 
	    mmm(state){ 
	    	return...
	    }
    }

5、modules
(1)、包含多个 module。
(2)、一个 module 是一个 store 的配置对象。
(3)、与一个组件(包含有共享数据)对应。
6、向外暴露 store对象

export default new Vuex.Store({ 
    state, 
    mutations, 
    actions, 
    getters 
})

7、组件中

import {mapState,mapGetters,mapActions} from'vuex' 
export default{ 
    computed:{ 
	    ...mapState(['xxx']), 
	    ...mapGetters(['mmm']), 
    } 
    methods:mapActions(['zzz']) 
}

{{xxx}} {{mmm}} @click="zzz(data)"

8、映射 store

import store from'./store' 
new Vue({ 
	store 
})

9、store对象
(1)、所有用 vuex 管理的组件中都多了一个属性$store,它就是一个 store 对象。
(2)、属性:
  state: 注册的 state 对象
  getters: 注册的 getters 对象
(3)、方法:
  dispatch(actionName,data): 分发调用 action

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值