vue3的表单暂存用vuex怎么写
时间: 2023-09-21 09:03:11 浏览: 181
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
在Vue3中,可以使用`vuex`来实现表单暂存。具体实现步骤如下:
1. 在`store`中定义一个`state`对象,用于存储表单数据。
```javascript
const state = {
form: {
name: '',
age: '',
email: ''
}
}
```
2. 定义`mutations`,用于更新`state`中的表单数据。
```javascript
const mutations = {
updateForm(state, payload) {
state.form[payload.key] = payload.value
}
}
```
3. 在组件中使用`mapState`函数将`state`对象中的表单数据映射到组件的`data`中。
```javascript
import { mapState } from 'vuex'
export default {
computed: {
...mapState({
formData: state => state.form
})
}
}
```
4. 在组件中使用`mapMutations`函数将`mutations`中的`updateForm`方法映射到组件的`methods`中。
```javascript
import { mapState, mapMutations } from 'vuex'
export default {
computed: {
...mapState({
formData: state => state.form
})
},
methods: {
...mapMutations(['updateForm']),
handleFormChange(key, value) {
this.updateForm({ key, value })
}
}
}
```
5. 在表单控件中使用`v-model`指令绑定表单数据,并在`change`事件中调用`handleFormChange`方法来更新`state`中的表单数据。
```html
<template>
<div>
<input type="text" v-model="formData.name" @change="handleFormChange('name', $event.target.value)">
<input type="text" v-model="formData.age" @change="handleFormChange('age', $event.target.value)">
<input type="email" v-model="formData.email" @change="handleFormChange('email', $event.target.value)">
</div>
</template>
```
通过以上步骤,就可以使用`vuex`来实现表单暂存了。
阅读全文