【面试题系列Vue07】Vuex是什么?使用Vuex的好处有哪些?

Vuex介绍

Vuex是一个专为Vue.js应用程序开发的状态管理模式,采用集中式存储管理应用的所有组件的状态,解决多组件数据通信。

(简单理解,Vuex 维护了⼀个对象,该对象存储了 Vue 应⽤中多个组件所需要共同使⽤的变量,使得组件可以共享它们,当对象中的变量发⽣变化时,不同组件中使用变量的地方也会相应地更新。其中,状态包含以下几个部分:

state,驱动应用的数据源;

view,以声明方式将 state 映射到视图;

actions,响应在 view 上的用户输⼊导致的状态变化。

下图为单向数据流示意图:

当应⽤中遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏:

  • 多个视图依赖于同⼀状态。
  • 来⾃不同视图的行为需要变更同⼀状态。

对于问题⼀,传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。

对于问题⼆,我们经常会采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。以上的这些模式非常脆弱,通常会导致无法维护的代码。

优势

  • 响应式 :相比于⼀个简单的全局对象,Vuex 的状态存储是响应式的。当 Vue 组件从 store 中 读取状态的时候,若 store
    中的状态发生变化,那么相应的组件也会进行高效的更新,从而确保了单向数据流的简洁性不被破坏。
  • 集中化管理:Vuex 通过把组件的共享状态抽取出来,以全局单例模式管理,这样任何组件都能用一致的方式获取和修改状态,使代码变得更具结构化且易于维护。
  • 插件式扩展:Vuex 允许开发者编写插件来扩展其功能,⽐如实现⽇志记录、持久化存储和调试等。也就是说,开发者可以根据应⽤程序的需求来选择性地扩展其功能。
  • 高度集成:由于 Vuex 是专⻔为 Vue.js 设计的,因此可以与 Vue.js 高度集成。在使用 Vuex 的 同时,还可以利用Vue.js 的许多特性,如指令、组件、计算属性等来构建更强大的应用程序。

应用场景

如果需要开发⼤型单页应用或应用里需要维护大量全局的状态,就可以使用 Vuex,否则,⼀个简单的 store 模式就够了。

用法

  1. Vuex 将全局状态放入 state 对象中,它本身是⼀棵状态树,组件中使用 store 实例的 state 访问这些状态。
  2. 用配套的 mutation 方法修改这些状态,并且只能用 mutation 修改状态,在组件中调用commit 方法提交 mutation。
  3. 如果应用中有异步操作或复杂逻辑组合,需要编写 action,执行结束如果有状态修改仍需提交mutation,组件中通过 dispatch 派发 action。
  4. 最后是模块化,通过 modules 选项组织拆分出去的各个子模块,在访问状态(state)时需注意添加子模块的名称,如果子模块有设置 namespace,那么提交 mutation 和派发 action 时还需要额外的命名空间前缀。
相关推荐
拿不拿铁1912 分钟前
Vite & Webpack & Rollup 入口与产出配置与示例
前端
用户904438163246014 分钟前
React 5 个 “隐形坑”:上线前没注意,debug 到凌晨 3 点
前端·javascript·react.js
xhxxx14 分钟前
《大厂面试:从手写 Ajax 到封装 getJSON,再到理解 Promise 与 sleep》
ajax·面试
StarkCoder15 分钟前
打造炫酷浮动式 TabBar:让 iOS 应用导航更有格调!
前端·ios
AAA阿giao18 分钟前
Promise:让 JavaScript 异步任务“同步化”的利器
前端·javascript·promise
我来变强了40 分钟前
token无感刷新全流程
java·vue.js
光影少年1 小时前
vite7更新了哪些内容
前端
六月的可乐1 小时前
前端自定义右键菜单与图片复制(兼容H5)
前端
浮游本尊1 小时前
React 18.x 学习计划 - 第八天:React测试
前端·学习·react.js
麦麦在写代码2 小时前
前端学习1
前端·学习