前端培训-中级阶段(41)- vue2.x 状态管理Vuex

简介: 前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

五大核心模块



  • State,数据中心,可以理解为 Vue 中的 data。只不过为了保持数据流向,需要用store.commit('increment')来修改(Mutation 内部再去修改 state),可以更明确地追踪到状态的变化。


  • 获取时可以使用 store.state.countthis.$store.state.countmapState


  • mapState 可以接收对象和数组,可以直接放在computed: mapState({})上,也可以使用展开运算符computed: {localComputed () {},


  • ...mapState({})}
  • 对象形式


mapState({
    // 箭头函数可使代码更简练
    count: state => state.count,
    // 传字符串参数 'count' 等同于 `state => state.count`
    countAlias: 'count',
    // 为了能够使用 `this` 获取局部状态,必须使用常规函数
    countPlusLocalState (state) {
      return state.count + this.localCount
    }
  })


  • 数组形式


mapState([
  // 映射 this.count 为 store.state.count
  'count'
])


  • Getter,可以理解为 Vue 的 computed 计算属性,返回值也会根据它的依赖被缓存起来,只有当它的依赖值发生了改变才会被重新计算。


  • 获取时可以使用 store.getters.countthis.$store.getters.countmapState


  • mapGetters
  • 单纯的映射 ...mapGetters(['doneTodosCount','anotherGetter',])
  • 换个名字映射出来 ...mapGetters({doneCount: 'doneTodosCount'})


  • Mutation可以理解为methods ,也可以理解为 setState ,只不过mutation 必须是同步函数,定义上来说是用来同步修改 state。


  • store.commit('increment') 不传递内容 increment (state, payload){payload == undefined}


  • store.commit('increment', 1) 传递数值 increment (state, payload){payload == 1}


  • store.commit('increment', {n:1}) 传递对象(推荐) increment (state, payload){payload == {n:1}}(我只是在描述内容是什么,想测试可以用 console.log)


  • ...mapMutations(['increment'])


  • ...mapMutations({add:'increment'})


this.add() 映射为 this.$store.commit('increment')


  • Action Action 提交的是 mutation,而不是直接变更状态。Action 可以包含任意异步操作。


在 vue 中使用 mapActions 做快捷映射,也可以不做映射直接使用 store.dispatch('increment')


dispatch 会返回一个 Promise ,所以我们也可以愉快的监听异步是否执行完成。


  • Module Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割:


const moduleA = {
  namespaced: true,//通过namespaced开启命名空间,默认情况下,模块内部的 action、mutation 和 getter 是注册在**全局命名空间**的——这样使得多个模块能够对同一 mutation 或 action 作出响应。
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 的状态


相关文章
|
2月前
|
JavaScript 前端开发 jenkins
抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
本文探讨了在不依赖Node和VSCode的情况下,仅使用记事本和浏览器开发一个完整的Vue3前端项目的方法。通过CDN引入Vue、Vue Router、Element-UI等库,直接编写HTML文件实现页面功能,展示了前端开发的本质是生成HTML。虽然日常开发离不开现代工具,但掌握这种基础方法有助于快速实现想法或应对特殊环境限制。文章还介绍了如何用Node简单部署HTML文件到服务器,提供了一种高效、轻量的开发思路。
71 10
|
4月前
|
JavaScript 前端开发 搜索推荐
Vue的数据驱动视图与其他前端框架的数据驱动方式有何不同?
总的来说,Vue 的数据驱动视图在诸多方面展现出独特的优势,其与其他前端框架的数据驱动方式的不同之处主要体现在绑定方式、性能表现、触发机制、组件化结合、灵活性、语法表达以及与后端数据交互等方面。这些差异使得 Vue 在前端开发领域具有独特的地位和价值。
122 58
|
3月前
|
存储 前端开发 JavaScript
前端状态管理:Vuex 核心概念与实战
Vuex 是 Vue.js 应用程序的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。本教程将深入讲解 Vuex 的核心概念,如 State、Getter、Mutation 和 Action,并通过实战案例帮助开发者掌握在项目中有效使用 Vuex 的技巧。
|
4月前
|
前端开发 JavaScript 开发者
React与Vue:前端框架的巅峰对决与选择策略
【10月更文挑战第23天】React与Vue:前端框架的巅峰对决与选择策略
|
4月前
|
前端开发 JavaScript 数据管理
React与Vue:两大前端框架的较量与选择策略
【10月更文挑战第23天】React与Vue:两大前端框架的较量与选择策略
|
5月前
|
JavaScript 前端开发 算法
前端优化之超大数组更新:深入分析Vue/React/Svelte的更新渲染策略
本文对比了 Vue、React 和 Svelte 在数组渲染方面的实现方式和优缺点,探讨了它们与直接操作 DOM 的差异及 Web Components 的实现方式。Vue 通过响应式系统自动管理数据变化,React 利用虚拟 DOM 和 `diffing` 算法优化更新,Svelte 通过编译时优化提升性能。文章还介绍了数组更新的优化策略,如使用 `key`、分片渲染、虚拟滚动等,帮助开发者在处理大型数组时提升性能。总结指出,选择合适的框架应根据项目复杂度和性能需求来决定。
118 2
|
5月前
|
前端开发 JavaScript 安全
在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新
在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新
326 4
|
5月前
|
存储 缓存 前端开发
Vuex深入探究:前端状态管理的利器
【10月更文挑战第11天】Vuex深入探究:前端状态管理的利器
47 1
|
5月前
|
JavaScript 前端开发 Java
VUE学习四:前端模块化,ES6和ES5如何实现模块化
这篇文章介绍了前端模块化的概念,以及如何在ES6和ES5中实现模块化,包括ES6模块化的基本用法、默认导出与混合导出、重命名export和import,以及ES6之前如何通过函数闭包和CommonJS规范实现模块化。
204 0
VUE学习四:前端模块化,ES6和ES5如何实现模块化
|
4月前
|
前端开发 JavaScript 开发者
React与Vue:前端框架的巅峰对决与选择策略
【10月更文挑战第23天】 React与Vue:前端框架的巅峰对决与选择策略

热门文章

最新文章