手把手教你学vue - 12 - 谈谈你不知道的vuex

262 阅读2分钟

Vuex是什么

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

注意几个关键词:

状态管理模式 集中式 可预测

何时用Vuex

如果你问了这个问题,说明你不该用。但这个问题可以很容易并且很正确的回答。

等你痛了的时候,你就该用了。如果你连自己的代码都看不懂的时候,如果你自己都搞不清楚值在组件中是怎么传递的时候,如果你自己代码写了一半,恶心的想要撂挑子不干的时候,赶紧的,Vue.use(Vuex)!

图解Vuex

vuex-1.png

简单概括:

  • Actions发送请求,响应成功后把数据提交给Mutations
  • Mutations接受到数据后,去更新State中的数据
  • State管理的数据是响应式的,当数据改变时渲染视图

mutations为什么要同步?

同步的意义在于每一个mutations执行完成后都可以对应一个新的状态,这样devtools就可以将snapshot存下来,然后就可以随便time-travel了

如果你开着 devtool 调用一个异步的 actions,你可以清楚地看到它所调用的 mutations 是何时被记录下来的,并且可以立刻查看它们对应的状态。

Vuex和localstorage

感觉vuex的功能可以用localstorage代替

vuex和localstorage是两个不同的工具。

localstorage是数据存储,而vuex是可预测的处理业务的逻辑 localstorage用作静态数据,而vuex是用作动态数据

vuex里,某一个状态的变化可以在组件内实时监测,并进行处理。设置可以随时time-travel

页面刷新后vuex中的state数据丢失如何解决?

利用vuex-persistedstate中的createPersistedState()方法,可以实现数据持久化

import { createStore } from "vuex";
import createPersistedState from "vuex-persistedstate";

const store = createStore({
  // ...
  plugins: [createPersistedState()],
});