Vue3的响应式数据处理方式
问题:data[0].tableId 是 undefined,但控制台可以打印出 data[0] 的值
原因: Vue 3 的响应式数据处理方式导致的。
Vue 3 使用了 Proxy 来实现响应式数据。当你访问一个响应式对象的属性时,Vue 会在底层进行拦截,并返回响应式的值。这意味着,当你访问 `data[0].TableId` 时,Vue 会返回响应式的 `TableId` 属性,而不是简单地返回原始的 `undefined` 值。
然而,当你在控制台中打印 `data[0]` 时,控制台显示的是对象的原始值,而不是 Vue 的响应式代理。因此,你可能会看到 `TableId` 属性的值是 `undefined`。
举个栗子:
<template>
<div>
<p>{{ data[0].TableId }}</p>
<p>{{ data[0] }}</p>
</div>
</template>
<script setup>
import { ref } from 'vue';
const originalData = [
{ TableId: 1, Name: 'Table 1' },
{ TableId: 2, Name: 'Table 2' }
];
const data = ref(originalData); // Use ref for arrays
console.log(data.value[0].TableId); // Access the reactive value using .value
console.log(data.value[0]); // Access the reactive object
</script>