vuex的作用,状态管理工具,可存储所有组件的公共状态,可以解决多个子组件通信问题。组件通过dispatch方法调用actions对象里面的方法,actions通过commit方法调用mutation对象里面的方法,mutation利用mutate改变state。state改变会改变组件的视图变化。
vuex的核心是store仓库,包含所有的state、getters、mutations、actions
1.安装:npm install vuex --save
2.安装后重启 npm run dev
3.vue里新建一个.js文件,然后在入口文件main.js中全局注册下。注:一般需要在根节点注入store对象如在main.js中import store from ‘./url’,这样可以在其他的组件中利用this.$store来访问store对象里想属性和方法。
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {'xxxxx数据'}
})
export default store
应用事例:/store/store.js
state
用于保存最基本的数据,类似vue的data对象,但是不同的是在vuex中不可以直接修改state里的值,而是需要通过commit提交mutation来间接实现对state的修改目的。
actions
action可以包含任何异步操作,不直接修改state,而是通过提交mutation。action需要通过this.$store对象调用dispatch方法来触发。
mutation
用于修改state状态,mutations对象中的函数要是同步函数,以便修改可以用调试工具进行调试。
当为state中的数据添加属性时,不能直接添加,需要利用set()方法实现。Vue.$set ( this.$store.state.obj, name, newvalue) 或者利用新的对象来替换原来的对象, eg:state.obj={…state.obj, newProperty:111} 表示将state中的obj对象重新引用到一个新对象,…state.obj利用es6的解构赋值序列化原来obj对象里的属性与新属性newProperty一起组成新对象的属性。
action中的操作可以是异步的。但是mutation中的操作是同步的
vuex的高级使用–mapState辅助函数+computed计算属性、mapMutations
一篇不错的vuex知识的资料: https://www.cnblogs.com/ghost-xyx/p/6380689.html