当前的调试工具暂时不支持vuex的调试查看,需要我们额外进行log调试,vuex内置了一个logger模块,我们只需要引入并且注册为插件即可
在 src/store/index.js 中加入如下代码:
import { createLogger } from ‘vuex’
    plugins: [
    
    createPersistedstate({
    
    
    key: ‘abc’, // erabbit-client-pc-store
    
    paths: [‘user’, ‘cart’]
    
    }), //这部分是做持久化的
    
    createLogger()  // 这个是logger模块
    
    ]
    
    首先呢,这个是vuex是如何定义的,在vue2.0中,我们是这样定义的。
   
    import Vue from ‘vue’
    
    import Vuex from ‘vuex’
    Vue.use(Vuex)
    
    export default new Vuex.Store({
    
    
    state:{},  //定义公共数据
    
    mutations:{},  //修改state中的数据
    
    getters:{},  //相当于计算属性,从state中派生出一些状态,当state中的值发生改变的时候,会被重新计算
    
    actions:{},  //发送请求的
    
    modules:{}
    })
    
    下面这段代码是Vuex在vue3.0中是怎么定义的,来对比一下不同吧!
   
import { createStore } from ‘vuex’ // 导入vuex
    export default createStore({
    
    
    state: {
    
    
    name: ‘小王’,
    
    age: 18
    
    },
    
    mutations: {
    
    
    update (state, num) {
    
    
    state.name = ‘xiaoli’
    
    }
    
    },
    
    getters: {
    
    
    updateState (state) {
    
    
    return state.age + ‘nihao’
    
    }
    
    },
    
    actions: {
    
    
    jumpTo (context, age = 20) {
    
    
    setTimeout(() => {
    
    
    context.commit(‘update’, age)
    
    }, 3000)
    
    }
    
    },
    
    modules: {
    
    
    }
    
    })
    
    使用的时候:
   
在template模板中使用时,vue2.0和vue3.0用法是一样的,在代码中使用的时候是有点小区别的
vue2.0中的使用:
    export default {
    
    
    methods: {
    
    
    xxx方法名 () {
    
    
    this.$store.commit()
    
    }
    
    }
    
    }
    
    vue3.0 中的使用:
   
1.首先先导入vuex
import { useStore } from ‘vuex’ //注意,是useStore不要写错哦,我这里一开始写成userStore..了,
报的错误是Object(…) 不是一个函数
2.这是vuex在vue3.0中是如何使用的
    <template>
    
    <div id=”nav”>
    
    <p>{
    
    {$store.state.name}}</p>
    
    <button @click=”mutationsA”>+</button>
    
    </div>
    
    <router-view/>
    
    </template>
    
    <script>
    
    import { useStore } from ‘vuex’
    
    export default {
    
    
    name: ‘App’,
    
    setup () {
    
    
    const store = useStore()  //记得加这一句
    
    //这一句是使用vuex仓库,我试了一下,注释掉这一句,直接使用useStore会报错
    
    console.log(store.state.name)
    
    console.log(store.getters.newname)
    
    const mutationsA = () => {
    
    
    store.commit(‘updatename’)
    
    }
    
    return { mutationsA }
    
    }
    
    }
    
    </script>
    
    接下来说一下vuex持久化,vuex是将数据保存到了浏览器的内存中,刷新,数据会丢失。解决办法是把vuex存到本地或者cookie中。
   
1.准备vuex模块 1.创建modules 2.在store/index.js中引入 (modules下准备几个模块呦!!)
举个例子吧,cart.js
    export default {
    
    
    namespaced: true,
    
    state: () => {
    
    
    return {
    
    
    list: []
    
    }
    
    }
    
    }
    
    2.安装vuex-persistedstate插件  npm i  vuex-persistedstate
   
3.如何使用插件来做持久化呢?
store/index.js
import createPersistedstate from ‘vuex-persistedstate’ //第一步导入
    export default createStore({
    
    
    modules: {
    
    
    xxxx,
    
    xxxx
    
    },
    
    //第二步是加这段代码,默认是存到了localStorage中
    
    plugins: [
    
    createPersistedstate({
    
    
    key: ‘abc’,
    
    paths: [‘user’, ‘cart’]
    
    })
    
    ]
    
    })
   
 
