Vuex是什么
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
注意几个关键词:
状态管理模式 集中式 可预测
何时用Vuex
如果你问了这个问题,说明你不该用。但这个问题可以很容易并且很正确的回答。
等你痛了的时候,你就该用了。如果你连自己的代码都看不懂的时候,如果你自己都搞不清楚值在组件中是怎么传递的时候,如果你自己代码写了一半,恶心的想要撂挑子不干的时候,赶紧的,Vue.use(Vuex)!
图解Vuex
简单概括:
- 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()],
});