vue3.0 vuex的使用

Posted oomsday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue3.0 vuex的使用相关的知识,希望对你有一定的参考价值。

vue3.0中如何使用vuex详细教程

简单使用

首先使用vite项目后安装vuex

npm install vuex@next --save

或者

yarn add vuex@next --save

安装完后,来查看下
来到main.js,引入我们的vuex

import  createApp  from 'vue'
import App from './App.vue'
import store from './store'

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

在src下创建一个文件夹store,store下创建文件夹test,test下创建index.js文件

test中index中代码如下

export const test = 
    state: //设置属性 用来存储数据
        index: 999 // 设置的值
    ,
    getters: //对应方法 用来获取属性的状态

    ,
    mutations: //更改属性的状态 

    ,
    actions: //应用 mutation 用于异步

    

store文件下index.js配置如下

import  createStore  from 'vuex'
import test from './text/index'


export default createStore( //vue3.0需要使用createStroe配置
    modules: 
        test          //分模块管理 test
    
)

app.vue中配置如下

<script>
import  useStore  from "vuex"; //需要引入vuex
export default 
  setup() 
    let store = useStore();  // 定义
    console.log(store.state.test);  // 这里可以结果可以查看statez中属性
    console.log(stote.state.test.index) // 输出结果为999
   ,
;
</script>

功能使用

mutations的使用:更改属性的状态或值
test中index中代码如下:

export const test = 
    state: //设置属性 用来存储数据
        index: 999 // 设置的值
    ,
    getters: //对应方法 用来获取属性的状态

    ,
    mutations: //更改属性的状态 
        setChangeindex(state, val) 
            state.index = val     //state为vuex中的state,val为更改属性的值
        
    ,
    actions: //应用 mutation 用于异步

    

app.vue中的配置如下

import  computed  from 'vue'
import  useStore  from "vuex";
export default 
  setup() 
    let store = useStore();
    console.log(store.state.test.index); //999 
    store.commit('setChangeindex',50)
    console.log(store.state.test.index) //50
  ,
;

如果渲染模板中需要使用到index则:

    return 
      index: computed(() => store.state.test.index),
    ;

getters的使用
在test中index.js配置

export const test = 
    state: //设置属性 用来存储数据
        index: 999 // 设置的值
    ,
    getters: //对应方法 用来获取属性的状态
        getindex:state => state.index+1,
    ,
    mutations: //更改属性的状态 
        setChangeindex(state, val) 
            state.index = val     //state为vuex中的state,val为更改属性的值
        
    ,
    actions: //应用 mutation 用于异步

    

app.vue的配置

import  computed  from "vue";
import  useStore  from "vuex";
export default 
  setup() 
    let store = useStore();
    console.log(store.state.test);
    store.commit("setChangeindex", 50);
    console.log(store.state.test.index);

    console.log(store.getters.getindex); // 51 可以获取index的状态
    return 
      shuju: computed(() => store.state.test.index),
    ;
  ,
;

action的使用
在test下index的配置


export const test = 
    state: //设置属性 用来存储数据
        index: 999,// 设置的值
        resdata: '',
    ,
    getters: //对应方法 用来获取属性的状态
        getindex: state => state.index + 1,
    ,
    mutations: //更改属性的状态 
        setChangeindex(state, val) 
            state.index = val     //state为vuex中的state,val为更改属性的值
        ,
        setRESdata(state, val) 
            state.index = val
        
    ,
    actions: //应用 mutation 用于异步
        getres(context, vm) 
            return new Promise((resolve, reject) =>   //发起请求
                axios(
                    url: '接口地址',
                    method: 'get',
                    data: ,
                    dataType: 'json',
                    headers: 
                        'Content-Type': 'application/json; charset=utf-8'
                    
                )
                    .then(res => 
                        // console.log(res)
                        let data = res.resultData
                        context.commit('numRemindObj', data)
                        resolve()
                    )
                // )
            )
        ,
        getindexs( commit , params)    //设置值
            setTimeout(() => 
                commit("setRESdata", params)
            , 1000)
        
    

在app.vue中的配置

import  computed  from "vue";
import  useStore  from "vuex";
export default 
  setup() 
    let store = useStore();
    console.log(store.state.test);
    store.commit("setChangeindex", 50);
    console.log(store.state.test.index);

    console.log(store.getters.getindex);

    console.log (store.dispatch('getres')) //action <pedding>状态

    console.log(store.dispatch('getindexs',resdata:2000)) //action <pedding>状态

    return 
      shuju: computed(() => store.state.test.index),
      
    ;
  ,
;

模块化使用

3.0中模块化的使用比较简单 分配即可,用到其他模块import后在modules注册就行。

import  createStore  from 'vuex'
import test from './text/index'     //test模块


export default createStore(
    modules: 
        test            //test的模块
    
)

以上是关于vue3.0 vuex的使用的主要内容,如果未能解决你的问题,请参考以下文章

Vue3.0中如何快速上手Vuex状态管理

vite初始化vue3.0项目——配置router和vuex

vite初始化vue3.0项目——配置router和vuex

vite初始化vue3.0项目——配置router和vuex

在 Vue 3 中使用 Vuex 4 模块和 TypeScript,以及如何修复循环依赖 linting 错误?

vue3.0 监听本地存储