javascript - 在 vue 中使用来自 vuex 状态的数据填充输入字段
问题描述
我的应用程序组件中有以下代码片段:
<template>
<div>
<h3>Basic</h3>
<div v-for="(field, index) in basics" :key="index">
<input v-model="basics.name" placeholder="Name" type="text">
<br>
<br>
<input v-model="basics.email" placeholder="Email" type="email">
<br>
<hr/>
<button @click.prevent="addField">Add</button>
<button @click.prevent="removeField(index)">Remove</button>
<br>
<button @click.prevent="back">Back</button>
<button @click.prevent="toNext">Next</button>
</div>
</div>
</template>
<script>
import { mapActions } from "vuex";
export default {
name: "Basics",
data() {
return {
basics: [{
name: "",
email: ""
}]
};
},
methods: {
...mapActions(["addBasicData"]),
addFied(){
this.basics.push({
name: "",
email: ""
});
},
removeField(index){
this.basics.splice(index, 1);
},
toNext() {
this.addBasicData(this.basics);
this.$router.push({ name: "Location" });
},
back() {
this.$router.back();
}
}
};
</script>
在上面的代码中,当我完成填写表格并单击下一步按钮时,数据被发送到状态,我们被引导到另一个名为“位置”的路线。
当我单击back
“位置”路线中的按钮时,我将返回名为“基本”的路线。
这里的问题是当我回到名为“Basic”的路由时,表单字段是空的,尽管它们与数据对象绑定。
当我返回同一路线时,如何填充这些输入字段?
这是应用程序的工作副本:codeandbox
解决方案
<div v-for="(field, index) in basics" :key="index">
<input v-model="basic.name" placeholder="Name" type="text">
<input v-model="basic.email" placeholder="Email" type="email">
<button @click.prevent="removeField(index)">Remove</button>
</div>
<hr/>
<button @click.prevent="addField">Add</button>
<br>
<button @click.prevent="back">Back</button>
<button @click.prevent="toNext">Next</button>
methods: {
addField() {
this.$store.commit('addBasic',{name:"",email:""} )
},
removeField(index) {
this.$store.commit('removeField',index )
},
toNext() {
this.$router.push({ name: "Location" });
}
},
computed: {
basic:{
get() {
return this.$store.getters.getBasic;
}
}
}
store.js
// ...
state: {
basic:[{name:"Jonny",email:"jonny@mail.com"},
{name:"Bonny",email:"Bonny@mail.com"}]
}
mutations: {
addBasic(state,value) {
state.basic.push(value)
},
removeField(state,index ){
state.basic.splice(index,1);
}
}
这只是您如何做到的两个版本之一。或者您可以映射突变并直接在点击事件中调用它们。 https://vuex.vuejs.org/guide/mutations.html https://vuex.vuejs.org/guide/forms.html
添加字段按钮仅在循环之外才有意义。
addBasicData 你不需要它
推荐阅读
- php - 是否可以使用 wpdb 查询或 woocommerce wordpress 中的 ajax 调用来更新购物车总数?
- swift - 解释图像缓存代码的作用
- django - 无法使用自定义用户模型登录到 Django Admin
- html - 如何隐藏滚动条但仍在页面上滚动?(适用于所有浏览器)
- python - 得到不正确的输入
- reactjs - 如何在 react.js 的回调中调用 UseState 钩子的状态更新器函数
- curl - CentOS 8 /bin/sh: line 1: a: No such file or directory
- react-native - 反应原生 html 编码
- python - pandas 中数据帧的 radd() 和 add() 方法有什么区别?
- php - 在浏览器上为 Laravel 5.2 启用错误处理