问题的原因是在代码中使用了 Vue 2.x 的响应式方法(reactive),而不是 Vue 3.x 中的响应式方法(ref、reactive)。在 Vue 3.x 中,使用 reactive 创建的响应式对象是一个 Proxy,而不是一个普通的对象,因此不能直接通过 .value 来获取值。

解决方法如下:

  1. 导入 refreactive 函数:
import { ref, reactive } from 'vue';
  1. treeDataformData2 改为使用 ref 函数创建响应式对象:
const treeData = ref<any[]>([]);
const formData2 = reactive<ResQueryT>({
    resId: '',
    resName: '',
});
  1. 在需要获取值的地方,使用 .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 函数应该返回一个包含 resIdresName 等属性的对象,你需要根据实际情况进行修改。

Vue 3 中使用 reactive 时获取值和赋值问题

原文地址: https://www.cveoy.top/t/topic/pjWl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录