【发布时间】:2020-07-18 21:50:56
【问题描述】:
我正在处理我的第一个 vue-apollo 项目,我想知道创建编辑表单的最佳方法是什么。我似乎在网上找不到任何示例。
现在我正在像这样查询我的用户数据:
export default {
data() {
return {
user: {
id: '',
name: '',
email: '',
},
}
},
apollo: {
user: {
query: USER_QUERY,
},
},
}
用这样一个简单的形式:
<form @submit.prevent="submitForm">
<label>Name</label>
<input type="text" v-model="user.name" />
<label>Email</label>
<input type="text" v-model="user.email" />
<button type="submit">Submit</button>
<button type="button" @click="cancel">Cancel</button>
</form>
问题是当我编辑表单然后关闭它时,当我返回表单时,GraphQL 缓存会返回我的编辑。这是因为我的输入直接绑定到使用 v-model 的 GraphQL 查询返回的对象。我可以想到两件事来避免这种情况:
- 创建查询返回的数据的副本(并将其称为 user 和 userData?),并将 v-model 绑定到该对象的键。但让我感到困扰的是,我需要创建一个重复的变量并将数据放在两个地方。
- 或者完全禁用此 GraphQL 查询的缓存。
感觉好像我错过了一个更明显的解决方案。当我使用 REST 时,有一个 Form 类基于此处理所有表单交互:
https://medium.com/@jeffochoa/vuejs-laravel-object-oriented-forms-f971cb50b7ab
也许可以用类似的方式解决?使用 Vue/Apollo/GraphQL 构建(编辑)表单的首选方法是什么?
【问题讨论】:
标签: vue.js graphql vue-apollo