Vue 3 中使用 reactive 时获取值和赋值问题
问题的原因是在代码中使用了 Vue 2.x 的响应式方法(reactive),而不是 Vue 3.x 中的响应式方法(ref、reactive)。在 Vue 3.x 中,使用 reactive 创建的响应式对象是一个 Proxy,而不是一个普通的对象,因此不能直接通过 .value 来获取值。
解决方法如下:
- 导入
ref和reactive函数:
import { ref, reactive } from 'vue';
- 将
treeData和formData2改为使用ref函数创建响应式对象:
const treeData = ref<any[]>([]);
const formData2 = reactive<ResQueryT>({
resId: '',
resName: '',
});
- 在需要获取值的地方,使用
.value来获取响应式对象的值:
console.log('----------那个----------', treeData.value);
console.log('----------那个----------', formData2.resName);
关于将 treeList 查出来的数据赋值给 formData2 表单值,你可以使用 Object.assign 或者直接将属性赋值给 formData2。
使用 Object.assign 的方法如下:
getRoleResList({ roleId })
.then((data: any) => {
Object.assign(formData2, data); ///表单
})
.finally(() => {
loading.value = false;
});
直接赋值的方法如下:
getRoleResList({ roleId })
.then((data: any) => {
formData2.resId = data.resId;
formData2.resName = data.resName;
// 其他属性的赋值
})
.finally(() => {
loading.value = false;
});
请注意,根据你的代码逻辑,getRoleResList 函数应该返回一个包含 resId 和 resName 等属性的对象,你需要根据实际情况进行修改。
原文地址: https://www.cveoy.top/t/topic/pjWl 著作权归作者所有。请勿转载和采集!