Vue3 reative回显问题
2023-12-15 18:07:13
1. reactive
在做项目的时候通常会遇到这种情况,比如我们有一个 Table
显示数据,添加 Table
数据的时候使用 dialog
弹出,在里面填写字段然后添加。
在 vue3
中,对于对象的响应式定义推荐使用 reactive
,那么可以写入如下代码:
const dialogRuleForm = reactive({
title: "",
status: "",
author: "",
});
2. 添加编辑功能
现在添加一个新功能:编辑
,我希望添加和编辑使用同一个 dialog
, 毕竟两者字段相同,使用数据赋值即可。
fetchApi({id: row.id})
.then((res) => {
dialogRuleForm = res.data;
})
会发现,这样赋值不会产生效果,那么怎么修改呢。
3. 修改
有三种方法:
- 使用
ref
,把reactive
改成ref
,如下:
const dialogRuleForm = ref({
title: "",
status: "",
author: "",
});
fetchApi({id: row.id})
.then((res) => {
dialogRuleForm.value = res.data;
})
千万别忘记,ref 后面要用 .value
, 建议使用 vscode 的 volar 插件,勾选 ref sugar.
- 接着使用
reactive
, 不过用一个key
值代表,如下:
const dialogRuleForm = reactive({
value: {
title: "",
status: "",
author: "",
},
});
fetchApi({id: row.id})
.then((res) => {
dialogRuleForm.value = res.data;
})
好像和 ref
在使用上没区别。
- 使用
Object.assign()
, 如下:?
const dialogRuleForm = reactive({
title: "",
status: "",
author: "",
});
fetchApi({id: row.id})
.then((res) => {
// 如果 res.data 是一个对象
Object.assign(dialogRuleForm, res.data);
// 如果 res.data 是一个数组
Object.assign(dialogRuleForm, {...res.data});
})
- 小技巧
如果使用同一个dialog
组件,当关闭dialog
时,需要清空组件内的数据,如果你的字段过多,就会变成如下情况:
Object.assign(dialogRuleForm, {
xxx: "",
xxx: "",
...
});
这样写的很累,我们可以在定义 reactive
数据的时候再定义一个 reset
, 如下:
使用的时候直接将这个空对象直接拷贝给新对象? 相当于重置效果了
const resetForm = reactive({ ...dialogRuleForm });
这样清空数据的时候就可以这样使用:
const resetForm= reactive({
title: "",
status: "",
author: "",
});
Object.assign(dialogRuleForm, resetForm);
文章来源:https://blog.csdn.net/m0_65607651/article/details/135020903
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!