【发布时间】:2021-03-19 18:08:44
【问题描述】:
我有一个用于客户注册和编辑的表单组件。创建表单组件时,我首先检查 URL 是否有 ID 以确定要显示的表单类型。如果表单没有 ID(意味着注册新客户)所有字段都应该为空。如果 URL 有 ID,那么我通过 Axios 请求加载客户端信息,然后将数据存储在 Vuex 中并在字段中显示数据以供修改。
<Form enctype="multipart/form-data" @submit="$emit('submit')">
<validation-provider
name="Compnay name"
>
<v-text-field
v-model="details.company_name"
label="Compnay name"
/>
<span class="text-sm text-red-500">{{ errors[0] }}</span>
</validation-provider>
<validation-provider
name="Compnay name"
>
<v-text-field
v-model="details.email"
label="Compnay email"
/>
<span class="text-sm text-red-500">{{ errors[0] }}</span>
</validation-provider>
<validation-provider
name="Compnay phone"
>
<v-text-field
v-model="details.phone"
label="Compnay name"
/>
<span class="text-sm text-red-500">{{ errors[0] }}</span>
</validation-provider>
...
然后我在这里设置数据属性
data: function () {
return {
details: {
type: Object,
default: () => ({})
},
在create 我做了await this.$store.dispatch("clients/getClientById", { id: id}) 来获取客户信息
我面临的挑战是在我从 computed 获取客户端后,我找不到将它们添加到 v-model 以使用 FormData 发送它们或编辑它们的方法.请有人指导我。
我试图这样做。但是当我在字段中输入内容时,我收到了一个错误提示 Error: [vuex] do not mutate vuex store state outside mutation handlers.
async getClientById(id){
await this.$store.dispatch("clients/getClientById", {
id: id})
.then(res => {
if (res.status === 200 ){
let clientData = res.data.data
this.details = clientData
this.status = clientData.status
}
})
【问题讨论】:
-
所以我猜你的 Vuex 操作
clients/getClientById正在将请求的结果 (res.data.data) 存储在状态中,对吧? -
是的,它存储客户数据
标签: javascript vue.js vuejs2 vuex