Vue学习笔记:Vuex
2019-11-26 09:10
861 查看
为什么需要Vuex
- 管理共享状态
- 解决一份数据在多个组件中试用的困难
- 系统化的状态管理,区别于小型状态过来
底层设计模式:
全局单例模式
应用场景
- 适合中大型项目;
- 小项目反而会因为引入更多概念和框架而带来复杂性
Vuex运行机制
下图和state->vue->action流程差不多,只是多了个Mutations,用于Devtools监控调试。改图必须牢记。方能在后续编码中熟练运用。
如何在Vue中使用Vuex
准备工作
vue create vue_demo cd vue_demo npm i vuex npm run serve
开头导入
import Vuex from 'vuex' Vue.use(Vuex)
创建store实例
const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment (state) { state.count++ } }, action:{ increment({commit}) { setTimeout(()=>{ commit('increment') }, 3000) } } })
组件
<template> <div id="app"> {{count}} </div> <button @click="$store.commit('increment')">click</button> <button @click="$store.dispatch('increment')">click</button> </template>
Script
export default{ name:"app", conputed:{ count(){ return 0; } } }
Vuex底层原理及核心概念
Vuex实践
使用常量代替Mutation事件类型Vuex实践
//mutation-types.js export const SOME_MUTATION = "SOME_MUTATION" //store.js import Vuex from 'vuex' improt {SOME_MUTATION} from './mutation-types' const store = new Vuex.Store({ state :{…}, mutations:{ [SOME_MUTATION](state){ //mutate state } } }
Module
- 开启名称空间 namespaced:true
- 嵌套模块不要过深,尽量扁平化
- 灵活应用 createNamespacedHelpers
相关文章推荐
- 20190219-vue学习笔记3
- vue 学习笔记 part-2->指令v-for
- Vue学习笔记4.2 父子组件传递
- vue学习笔记
- vue.js学习笔记-5
- vue学习笔记五:在vue项目里面使用引入公共方法详解
- Vue学习笔记 ------ 自定义按键修饰符
- vue.js 源代码学习笔记 ----- instance event
- vue学习笔记2
- Vue.js第三天学习笔记(计算属性computed)
- vue 学习笔记
- vue 学习笔记 part-4 ->v-on指令
- vue学习笔记(4)
- vue中使用Ueditor富文本编辑器 ---- 学习笔记
- Vue 2.0学习笔记之使用$refs访问Vue中的DOM
- vue学习笔记之指令v-text && v-html && v-bind详解
- VUE 学习笔记 从零开始一步一步构建 VUE 单页应用(二)
- VUE学习笔记——vue+webpack脚手架搭建
- Vue学习笔记——全局API【转自jspang】
- vue.js 源代码学习笔记 ----- codegenEvents.js