这是两个完全不同的概念 =。= 之前刚接触vue的时候也是傻傻分不清,看到萌新跟当初的我一样有相同的疑问,那就系统记录下。
首先 vuex 是给 vue 用的状态管理库(除了能管理数据 state,还能管理读写数据的操作 mutation ),而 localStorage 仅仅是个浏览器提供的api,在状态管理这方面,它只起到将数据持久化存储的作用,至于管理读写数据的操作,不存在的……
并且,vuex 中的数据是存储在内存中的,页面刷新就会丢失,而 localstorage 则是存储在计算机本地,刷新并不会丢失
举个栗子深入理解 vuex
如果你的整个项目是一个酒店,这间酒店能用做菜的 原材料(data)和 厨具(function)做出各种美味的 菜肴(经过处理的 data,注入到写好样式的页面中),各个.vue文件.js文件都看作是一个单独的酒店房间,都能堆放各种 data 和 function ,
那么 vuex 就是这间酒店的中心仓库,存储了整间酒店做所有各式菜肴都要用到的通用 原材料(state)以及 厨具(mutation)
举个栗子深入理解 localStorage 在 vuex 中的运用
比如你说的用户信息 userInfo ,在 vuex 中是放在整个单对象树的 state 属性里的,书写管理这个 userInfo 的 mutation 有两种方案:
方案一:
不使用
localStorage。页面每次要用到userInfo都是直接通过发送请求从api服务器处获取
方案二:
使用
localStorage。 先声明一个调用 api 拉取用户信息到本地并存入 localstorage 的getUserInfoFromAPIsaveToLocalStorage()方法,要用到userInfo的时候,则调用从本地 localstorage 读取用户信息的getUserInfoFronLocalStorage()方法
在 vuex 里,getUserInfoFromAPIsaveToLocalStorage() 和 getUserInfoFronLocalStorage() 这两个 function 是放在 mutation 属性里的