亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

在組件中修改vuex中state的具體實(shí)現(xiàn)方法

 更新時(shí)間:2025年02月14日 11:32:45   作者:前端美少女戰(zhàn)士  
在組件中修改 Vuex 中的 state,根據(jù)使用的 Vue 版本(Vue 2 或 Vue 3)不同,有不同的操作方式,但總體思路都是借助 Vuex 提供的 mutations 或 actions 來實(shí)現(xiàn),以下分別介紹兩種版本下的具體實(shí)現(xiàn)方法,需要的朋友可以參考下

Vue 2 中修改 Vuex 的 state

1. 使用 mutations

mutations 是修改 state 的唯一推薦方式,并且它必須是同步函數(shù)。

Vuex 存儲(chǔ)配置

// src/store/index.js
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

const store = new Vuex.Store({
    state: {
        message: 'Hello, Vuex!'
    },
    mutations: {
        updateMessage(state, newMessage) {
            state.message = newMessage;
        }
    }
});

export default store;

組件中使用 mutations 修改 state

<template>
    <div>
        <p>{{ message }}</p>
        <input v-model="newMessage" />
        <button @click="updateMessage">Update Message</button>
    </div>
</template>

<script>
import { mapState, mapMutations } from 'vuex';

export default {
    computed: {
        ...mapState(['message']),
        newMessage: {
            get() {
                return '';
            },
            set(value) {
                this._newMessage = value;
            }
        }
    },
    data() {
        return {
            _newMessage: ''
        };
    },
    methods: {
        ...mapMutations(['updateMessage']),
        updateMessage() {
            this.updateMessage(this._newMessage);
        }
    }
};
</script>

2. 使用 actions

actions 主要用于處理異步操作,最終會(huì)通過 commit 調(diào)用 mutations 來修改 state。

Vuex 存儲(chǔ)配置

// src/store/index.js
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

const store = new Vuex.Store({
    state: {
        message: 'Hello, Vuex!'
    },
    mutations: {
        updateMessage(state, newMessage) {
            state.message = newMessage;
        }
    },
    actions: {
        asyncUpdateMessage(context, newMessage) {
            setTimeout(() => {
                context.commit('updateMessage', newMessage);
            }, 1000);
        }
    }
});

export default store;

組件中使用 actions 修改 state

<template>
    <div>
        <p>{{ message }}</p>
        <input v-model="newMessage" />
        <button @click="asyncUpdateMessage">Update Message Asynchronously</button>
    </div>
</template>

<script>
import { mapState, mapActions } from 'vuex';

export default {
    computed: {
        ...mapState(['message']),
        newMessage: {
            get() {
                return '';
            },
            set(value) {
                this._newMessage = value;
            }
        }
    },
    data() {
        return {
            _newMessage: ''
        };
    },
    methods: {
        ...mapActions(['asyncUpdateMessage']),
        asyncUpdateMessage() {
            this.asyncUpdateMessage(this._newMessage);
        }
    }
};
</script>

Vue 3 中修改 Vuex 的 state

1. 使用 mutations

同樣,mutations 是修改 state 的基礎(chǔ)方式。

Vuex 存儲(chǔ)配置

// src/store/index.js
import { createStore } from 'vuex';

const store = createStore({
    state() {
        return {
            message: 'Hello, Vuex!'
        };
    },
    mutations: {
        updateMessage(state, newMessage) {
            state.message = newMessage;
        }
    }
});

export default store;

組件中使用 mutations 修改 state

<template>
    <div>
        <p>{{ message }}</p>
        <input v-model="newMessage" />
        <button @click="updateMessage">Update Message</button>
    </div>
</template>

<script setup>
import { computed } from 'vue';
import { useStore } from 'vuex';

const store = useStore();

const message = computed(() => store.state.message);
const newMessage = computed({
    get() {
        return '';
    },
    set(value) {
        store.commit('updateMessage', value);
    }
});

const updateMessage = () => {
    store.commit('updateMessage', newMessage.value);
};
</script>

2. 使用 actions

用于處理異步操作并最終修改 state

Vuex 存儲(chǔ)配置

// src/store/index.js
import { createStore } from 'vuex';

const store = createStore({
    state() {
        return {
            message: 'Hello, Vuex!'
        };
    },
    mutations: {
        updateMessage(state, newMessage) {
            state.message = newMessage;
        }
    },
    actions: {
        asyncUpdateMessage(context, newMessage) {
            setTimeout(() => {
                context.commit('updateMessage', newMessage);
            }, 1000);
        }
    }
});

export default store;

組件中使用 actions 修改 state

<template>
    <div>
        <p>{{ message }}</p>
        <input v-model="newMessage" />
        <button @click="asyncUpdateMessage">Update Message Asynchronously</button>
    </div>
</template>

<script setup>
import { computed } from 'vue';
import { useStore } from 'vuex';

const store = useStore();

const message = computed(() => store.state.message);
const newMessage = computed({
    get() {
        return '';
    },
    set(value) {
        store.dispatch('asyncUpdateMessage', value);
    }
});

const asyncUpdateMessage = () => {
    store.dispatch('asyncUpdateMessage', newMessage.value);
};
</script>

總結(jié)

在組件中修改 Vuex 的 state,一般優(yōu)先通過 mutations 進(jìn)行同步修改;如果涉及異步操作,則使用 actions 先處理異步邏輯,再通過 commit 調(diào)用 mutations 來完成 state 的修改。同時(shí),根據(jù) Vue 版本不同,組件中使用 Vuex 的語法也有所差異,需要根據(jù)實(shí)際情況選擇合適的方式。

以上就是在組件中修改vuex中state的具體實(shí)現(xiàn)方法的詳細(xì)內(nèi)容,更多關(guān)于vuex state修改的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue中的組件及路由使用實(shí)例代碼詳解

    Vue中的組件及路由使用實(shí)例代碼詳解

    組件系統(tǒng)是 Vue 的一個(gè)重要概念,因?yàn)樗且环N抽象,允許我們使用小型、獨(dú)立和通常可復(fù)用的組件構(gòu)建大型應(yīng)用。這篇文章主要介紹了Vue中的組件及路由使用 ,需要的朋友可以參考下
    2019-05-05
  • vue中使用router全局守衛(wèi)實(shí)現(xiàn)頁面攔截的示例

    vue中使用router全局守衛(wèi)實(shí)現(xiàn)頁面攔截的示例

    這篇文章主要介紹了vue中使用router全局守衛(wèi)實(shí)現(xiàn)頁面攔截的示例,幫助大家維護(hù)自己的項(xiàng)目,感興趣的朋友可以了解下
    2020-10-10
  • vue+elementUI組件tree如何實(shí)現(xiàn)單選加條件禁用

    vue+elementUI組件tree如何實(shí)現(xiàn)單選加條件禁用

    這篇文章主要介紹了vue+elementUI組件tree如何實(shí)現(xiàn)單選加條件禁用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue 移動(dòng)端適配方案詳解

    vue 移動(dòng)端適配方案詳解

    這篇文章主要介紹了vue 移動(dòng)端適配方案詳解,詳細(xì)的介紹2種方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • vue quill editor 使用富文本添加上傳音頻功能

    vue quill editor 使用富文本添加上傳音頻功能

    vue-quill-editor 是vue項(xiàng)目中常用的富文本插件,其功能能滿足大部分的項(xiàng)目需求。這篇文章主要介紹了vue-quill-editor 富文本添加上傳音頻功能,需要的朋友可以參考下
    2020-01-01
  • 淺談vite和webpack的性能優(yōu)化和區(qū)別

    淺談vite和webpack的性能優(yōu)化和區(qū)別

    本文主要介紹了淺談vite和webpack的區(qū)別,從性能優(yōu)化的幾個(gè)方便講解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Vue 3 自定義權(quán)限指令 v-action的作用

    Vue 3 自定義權(quán)限指令 v-action的作用

    在實(shí)際的前端開發(fā)中,尤其是涉及到權(quán)限管理的系統(tǒng),我們經(jīng)常需要根據(jù)用戶的權(quán)限動(dòng)態(tài)控制某些按鈕的顯示和隱藏,這篇文章主要介紹了Vue 3 自定義權(quán)限指令 v-action的相關(guān)知識(shí),需要的朋友可以參考下
    2025-04-04
  • 詳解vue2.0 資源文件assets和static的區(qū)別

    詳解vue2.0 資源文件assets和static的區(qū)別

    這篇文章主要介紹了詳解vue2.0 資源文件assets和static的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • vue3?內(nèi)容過多出現(xiàn)滾動(dòng)條時(shí)滾動(dòng)條自動(dòng)定位到末端的操作代碼

    vue3?內(nèi)容過多出現(xiàn)滾動(dòng)條時(shí)滾動(dòng)條自動(dòng)定位到末端的操作代碼

    這篇文章主要介紹了vue3?內(nèi)容過多出現(xiàn)滾動(dòng)條時(shí)滾動(dòng)條自動(dòng)定位到末端的操作代碼,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2024-05-05
  • Vue-admin-template?報(bào)Uncaught?(in?promise)?error問題及解決

    Vue-admin-template?報(bào)Uncaught?(in?promise)?error問題及解決

    這篇文章主要介紹了Vue-admin-template?報(bào)Uncaught?(in?promise)?error問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論