Modify Vuex's state in Vue 2
1. Use mutations
mutations
It's a modificationstate
The only recommended way to and it must be a synchronous function.
Vuex Storage Configuration:
// src/store/ import Vue from 'vue'; import Vuex from 'vuex'; (Vuex); const store = new ({ state: { message: 'Hello, Vuex!' }, mutations: { updateMessage(state, newMessage) { = newMessage; } } }); export default store;
Used in componentsmutations
Revisestate
:
<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._newMessage); } } }; </script>
2. Use actions
actions
Mainly used to handle asynchronous operations, it will eventually passcommit
Callmutations
Come to modifystate
。
Vuex Storage Configuration:
// src/store/ import Vue from 'vue'; import Vuex from 'vuex'; (Vuex); const store = new ({ state: { message: 'Hello, Vuex!' }, mutations: { updateMessage(state, newMessage) { = newMessage; } }, actions: { asyncUpdateMessage(context, newMessage) { setTimeout(() => { ('updateMessage', newMessage); }, 1000); } } }); export default store;
Used in componentsactions
Revisestate
:
<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._newMessage); } } }; </script>
Modify Vuex's state in Vue 3
1. Use mutations
same,mutations
It's a modificationstate
The basic method.
Vuex Storage Configuration:
// src/store/ import { createStore } from 'vuex'; const store = createStore({ state() { return { message: 'Hello, Vuex!' }; }, mutations: { updateMessage(state, newMessage) { = newMessage; } } }); export default store;
Used in componentsmutations
Revisestate
:
<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(() => ); const newMessage = computed({ get() { return ''; }, set(value) { ('updateMessage', value); } }); const updateMessage = () => { ('updateMessage', ); }; </script>
2. Use actions
Used to handle asynchronous operations and final modificationstate
。
Vuex Storage Configuration:
// src/store/ import { createStore } from 'vuex'; const store = createStore({ state() { return { message: 'Hello, Vuex!' }; }, mutations: { updateMessage(state, newMessage) { = newMessage; } }, actions: { asyncUpdateMessage(context, newMessage) { setTimeout(() => { ('updateMessage', newMessage); }, 1000); } } }); export default store;
Used in componentsactions
Revisestate
:
<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(() => ); const newMessage = computed({ get() { return ''; }, set(value) { ('asyncUpdateMessage', value); } }); const asyncUpdateMessage = () => { ('asyncUpdateMessage', ); }; </script>
Summarize
Modify Vuex's in the componentstate
, generally preferredmutations
Make synchronous modifications; if asynchronous operations are involved, useactions
First handle asynchronous logic, then passcommit
Callmutations
Come and finishstate
Modification. At the same time, depending on the Vue version, the syntax of using Vuex in components also varies, and you need to choose the appropriate method according to the actual situation.
The above is the detailed content of the specific implementation method of modifying state in vuex in components. For more information about modifying vuex state, please pay attention to my other related articles!