在vue3.x项目中需使用vuex4.x版本;

安装

直接下载/CDN
https://unpkg.com/vuex

npm /cnpm /yarn

npm install vuex@next --save
cnpm install vuex@next --save
yarn add vuex@next --save

项目中使用

在根目录下创建store文件夹,在store文件夹下创建index.js文件,在index.js文件中书写代码,与vue2.0中使用的vuex相差不大,直接上代码:

import { createStore } from 'vuex'

export default createStore({
    state: {
        count: 0
    },
    mutations: {
    // 进行数据更新,改变数据状态
        countType(state, action){
            state.count =  state.count + action.payload
        }
    },
    actions: {
    //执行动作,数据请求
        addCount({commit}){
            fetch('../data.json')
            .then(function(response) {
                return response.json();
            })
            .then(function(myJson) {
                let action = {
                    type: 'countType',
                    payload: myJson.text
                }
                commit(action)
            });
        }
    },
    getters: {
    // 获取到最终的数据结果
        getCount(state){
            return state.count
        }
    }
})

在main.js中

import store from './store'

createApp(App).use(store).mount('#app')

在组件中

<template>
    <div class="container">
        <button @click="add">{{data.count}}</button>
    </div>
</template>
import { reactive } from 'vue'
import { useStore } from 'vuex'
export default {
    setup(){
        let store = useStore()
        let data = reactive({
        	count: 0
        })
        onMounted(() => {
            store.dispatch('addCount')
        })
        let add = () => {
            store.dispatch('addCount')
            data.count = data.count = store.getters.getCount
        }
        return{
        	data,
            add
        }
    }
}

与vue2.x的差异

在store文件夹中

vue2.x
在这里插入图片描述
vue3.x
(http://www.smallxlb.com/wp-content/uploads/2021/01/2-2.png)

在main.js中

vue2.x
在这里插入图片描述
vue3.x
在这里插入图片描述

Logo

前往低代码交流专区

更多推荐