首页 > 其他分享 >Vue3的响应式数据处理方式

Vue3的响应式数据处理方式

时间:2023-07-27 16:02:48浏览次数:66  
标签:Vue undefined value 响应 TableId Vue3 数据处理 data

问题: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>

  

 

标签:Vue,undefined,value,响应,TableId,Vue3,数据处理,data
From: https://www.cnblogs.com/zzhsmallblog/p/17585204.html

相关文章

  • vue3实现图片滚动播放
    <template> <divclass="swiperBox">  <divid="swiper">   <divclass="imgBox"@mouseenter="mouseenter"@mouseleave="mouseleave">    <av-for="(x,i)inLinkList&......
  • vue2和vue3的区别
    1.性能提升vue3对性能进行了优化,相较于vue2,在运行时的性能更高。vue3采用了Proxy代理机制,使得在数据变化时可以更快的更新视图,从而提供了更好的响应性能。2.ComposiitonAPI(组合式API)vue3引入了CompsitionAPI,这是一种新的API风格,它允许开发者更好的组织和重用代码。相比于......
  • vue3状态管理工具Pinia的使用
    1.安装  npminstallpinia--save 2.src文件夹下新建store文件夹,并新建index.tsimport{createPinia}from'pinia'constpinia=createPinia()exportdefaultpinia2.在main.ts中引入piniaimportpiniafrom'./store'import{createApp}from'vue'......
  • vue3中的watch与vue2中的watch的对比
    新版的 watch 和旧版对比,在使用方式上变化非常大!旧版是这样用的,和 data 、 methods 都在同级配置://旧版的写法:exportdefault{watch:{//...},data(){return{//...}},methods:{//...}} 新版的 watch......
  • 长连接:chatgpt流式响应背后的逻辑
    一、前言:提起长连接,我们并不陌生,最常见的长连接非websocket莫属了。即使没有在项目中实际用过,至少也应该有所接触。长连接指在一次网络通信中,客户端与服务器之间建立一条持久的连接,可以在多次请求和响应中重复使用该连接。这种方式的优点是减少了连接建立和关闭的开销,提高了通信......
  • 尝试解决Sublime Text启动即卡死白屏无响应问题
    最近在使用SublimeText时发现启动时会卡死将近1-2分钟,一两次可还行,但次次都出现这个问题真的忍不了辣!!等得我要摔电脑辣!!(bushi 1.问题的产生在Sublime中按下Ctrl+~开启控制台界面见下图: 我们可以看见其他插件正常加载(reloading),但我的1self这个插件出现了报错,(合理推测......
  • Vue3 组件篇
    组件命名组件的命名一般分为两种在单文件组件中,推荐为子组件使用PascalCase的标签名,以此来和原生的HTML元素作区分。虽然原生HTML标签名是不区分大小写的,但Vue单文件组件是可以在编译中区分大小写的。我们也可以使用/>来关闭一个标签。使用kebab-case形式并显式地......
  • vue3之element-plus
    1.安装elementPlus和自动导入插件npmielementPlusnpminstall-Dunplugin-vue-componentsunplugin-auto-import2、配置自动按需导入//引入插件importAutoImportfrom'unplugin-auto-import/vite'importComponentsfrom'unplugin-vue-components/vite'import{......
  • Vue3.0 页面跳转的几种方式
     首先引入import{useRouter}from"vue-router";使用router接收useRouterconstrouter=useRouter(); 1. router.push我们最常用的router.push方法会将新的路由添加到历史记录中,同时会导航到该路由页面,当用户点击浏览器后退按钮时,则回到之前的URL。//保留......
  • Vue3组件二次封装
    naive-ui的n-input举例<template><n-inputclearableplaceholder=""v-bind="$attrs"><templatev-for="(value,name)in$slots"#[name]="slotData">......