vuex实现表单信息边输入边保存,跳转页面信息不丢失

2 篇文章 0 订阅

vuex实现表单信息边输入边保存,跳转页面信息不丢失

运用场景:项目中需要填写一个新增表单,填写到第三行内容时需要从A页面跳转到B页面获取信息,从B页面跳回A页面时之前用v-model绑定的第一第二行内容丢失。如下图所示场景
在这里插入图片描述
如何解决这一问题呢?
将每一行的信息在输入完成后直接存储vuex当中,具体如何实时存储请看代码
1.首先在当前vue组件中:

<div>
  <span>有效日期</span>
  <div>
  <!--使用:value替代v-model绑定当前页面的值,setLimitTime为vuex中mutation中定义的方法-->
    <input type="text"  :value="limitTime" @input="setLimitTime($event.target.value)" style="text-align: right"
           placeholder="请输入" />
  </div>
</div>
<script>
import {mapState, mapMutations} from 'vuex';

methods:{
...mutation('vuex文件名',['setLimitTime'])
}
computed:{
...mapState('vuex文件名',['limitTime'])
}
</script>

2.在vuex中

const state={
 
  limitTime: ``,//有效日期
//其他信息依次存储
};

const getters = {

};

const mutations = {
  //保存有效日期
  setLimitTime(state,limitTime){
    state.limitTime=limitTime;
  },
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您解答这个问题。 首先,使用Vue实现表单提交JSON数据的步骤如下: 1. 在Vue组件中,使用v-model指令绑定表单输入框的值,例如: ```html <template> <div> <input type="text" v-model="form.name" /> <input type="text" v-model="form.email" /> <button @click="submitForm">提交</button> </div> </template> <script> export default { data() { return { form: { name: '', email: '', }, }; }, methods: { submitForm() { // 将表单数据转为JSON格式 const formData = JSON.stringify(this.form); // 将JSON数据提交到后端 // ... }, }, }; </script> ``` 2. 在submitForm方法中,将表单数据转为JSON格式,然后将JSON数据提交到后端。 接下来,使用Vuex实现表单提交JSON数据的步骤如下: 1. 在Vuex store中定义一个表单数据状态,例如: ```js // store.js export default new Vuex.Store({ state: { formData: { name: '', email: '', }, }, mutations: { updateFormData(state, formData) { state.formData = formData; }, }, actions: { submitForm({ state }) { // 将表单数据转为JSON格式 const formData = JSON.stringify(state.formData); // 将JSON数据提交到后端 // ... }, }, }); ``` 2. 在表单组件中,使用mapState和mapMutations将表单数据状态映射到组件中,并使用mapActions将submitForm方法映射到组件中,例如: ```html <template> <div> <input type="text" v-model="formData.name" /> <input type="text" v-model="formData.email" /> <button @click="submitForm">提交</button> </div> </template> <script> import { mapState, mapMutations, mapActions } from 'vuex'; export default { computed: { ...mapState({ formData: state => state.formData, }), }, methods: { ...mapMutations({ updateFormData: 'updateFormData', }), ...mapActions({ submitForm: 'submitForm', }), }, }; </script> ``` 3. 在表单输入框中,使用v-model指令绑定formData中对应字段的值,并在输入框值改变时,调用updateFormData方法更新formData状态,例如: ```html <input type="text" v-model="formData.name" @input="updateFormData({ name: $event.target.value })" /> <input type="text" v-model="formData.email" @input="updateFormData({ email: $event.target.value })" /> ``` 这样,当用户点击提交按钮时,会触发submitForm方法将表单数据转为JSON格式并提交到后端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值