为了账号安全,请及时绑定邮箱和手机立即绑定

详解VUEX是什么

标签:
Vue.js

vuex是什么东东,很多人即使看了文档也是一头雾水。只知道它是一个专为 Vue.js 应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
Vuex 中 Store 的模板化定义如下:

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)const store = new Vuex.Store({  state: {
  },  actions: {
  },  mutations: {
  },  getters: {
  },  
  modules: {
    
  }
})export default store

由上面的代码可以看出,vuex包含5个属性,下面我们将逐一解释。

state:state 定义了应用状态的数据结构,同样可以在这里设置默认的初始状态。代码样式:
state:{projects:[],
userInfo:{}
}

state数据结构处理好以后,需要调用。那么该用什么来调用呢。想想后端从前端拿到了数据,总要做个处理吧,处理完了再存到数据库中,这就用到了action。它是定义提交触发更改信息的描述,在数据获取完成后会调用store.commit()来调用更改 Store 中的状态

actions:Actions就是从服务器端获取数据,在数据获取完成后会调用store.commit()来调用更改 Store 中的状态。
/*
备注:SET_PROJECT_LIST是mutations自定义的变量。store.commit只是提交一个 mutation,commit('参数1','参数2')。其中,参数1就不说了,参数2就是为参数1赋值。
*/actions: {    LOAD_PROJECT_LIST: function ({ commit }) {
      axios.get('API接口').then((response) => {
        commit('SET_PROJECT_LIST', { list: response.data })
      }, (err) => {        console.log(err)
      })
    }
  }
mutations: 调用 mutations 是唯一允许更新应用状态的地方,代码如下:
/*备注:state是上面定义的数据结构,projects是state定义的变量,如上所示。
SET_PROJECT_LIST是mutations自定义变量。
state.projects = list。意思就是把{list}值赋给state.projects;
*/export const SET_PROJECT_LIST = 'SET_PROJECT_LIST'; //定义变量mutations: {    SET_PROJECT_LIST: (state, { list }) => {
      state.projects = list
    }
  }
getters: Getters 允许组件从 Store 中获取数据,譬如我们可以从 Store 中的 projectList 中筛选出已完成的项目列表:
getters: { completedProjects: state => {
  return state.projects.filter(project => project.completed).length
 }
}
modules允许将当个store拆分成多个store,每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割。这里的内容可以参考官网
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 的状态

今天讲vuex是想跟大家说一下,后面我将结合vuex写个项目,里面将融入vue2+vuex+ES6/7等知识。



作者:陈楠酒肆
链接:https://www.jianshu.com/p/9ebcc182922b


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消