我是歌谣 放弃很容易 但是坚持一定很酷 在我们的日常 我们在学习一个新的知识点
的时候 不免就需要我们有阅读文档的能力
了解vuex的产生
比如我们在学习Vuex的时候
最近开始接触新项目了 需要学习一个新项目
了解一个新的知识点
最近主要攻关Vuex这一部分的内容
看看别人封装的代码
首先我们打开官网
看一下Vuex的原理
看一下为什么需要vuex 因为他的应用场景
全局状态管理
vuex的原理
这两张图是vuex的一个核心概念
通过这两张图
state,驱动应用的数据源;
view,以声明方式将 state 映射到视图;
actions,响应在 view 上的用户输入导致的状态变化。
重要的五个属性 面试必考
安装
安装就直接过去了 就是包管理工具import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)const store = new Vuex.Store({state: {count: 0},mutations: {increment (state) {state.count++}}
})
state
Vuex 通过 store 选项,提供了一种机制将状态从根组件“注入”到每一个子组件中(需调用 Vue.use(Vuex)):const app = new Vue({el: '#app',// 把 store 对象提供给 “store” 选项,这可以把 store 的实例注入所有的子组件store,components: { Counter },template: `<div class="app"><counter></counter></div>`
})通过在根实例中注册 store 选项,该 store 实例会注入到根组件下的所有子组件中,且子组件能通过 this.$store 访问到。让我们更新下 Counter 的实现:const Counter = {template: `<div>{{ count }}</div>`,computed: {count () {return this.$store.state.count}}
}
getter计算属性
Getter 接受 state 作为其第一个参数:const store = new Vuex.Store({state: {todos: [{ id: 1, text: '...', done: true },{ id: 2, text: '...', done: false }]},getters: {doneTodos: state => {return state.todos.filter(todo => todo.done)}}
})
action
定义异步
const store = new Vuex.Store({state: {count: 0},mutations: {increment (state) {state.count++}},actions: {increment (context) {context.commit('increment')}}
})
mutation
更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数:const store = new Vuex.Store({state: {count: 1},mutations: {increment (state) {// 变更状态state.count++}}
})你不能直接调用一个 mutation handler。这个选项更像是事件注册:“当触发一个类型为 increment 的 mutation 时,调用此函数。”要唤醒一个 mutation handler,你需要以相应的 type 调用 store.commit 方法:store.commit('increment')
module
const moduleA = {state: () => ({ ... }),mutations: { ... },actions: { ... },getters: { ... }
}const moduleB = {state: () => ({ ... }),mutations: { ... },actions: { ... }
}const store = new Vuex.Store({modules: {a: moduleA,b: moduleB}
})store.state.a // -> moduleA 的状态
store.state.b // -> moduleB 的状态
扩展(映射函数)
map…
总结
r日常生活开发工作中 我们必须拥有阅读官方文档的能力
这样我们才能原来越强 包含react 还有比如第三方插件moment.js
等等 都需要具备这样的能力
我是歌谣 放弃很容易 但是坚持一定很酷
官方文档很强大!!!
官网链接