vue3第二次传递数据方法无法获取到最新的值
笔记哥 /
04-02 /
29点赞 /
0评论 /
556阅读

#### 使用reactive父组件第二次传递给子组件的数据:方法中可以获取到最新数据
```csharp
```
```csharp
```

#### 使用ref父组件第二次传递给子组件的数据:不能获取到最新的数据
```csharp
```
```csharp
```

#### 办法1:将数据作为函数的参数进行传递
```csharp
```
```csharp
```

#### 解决办法2:在调用方法时使用 nextTick
```csharp
```
```csharp
```

#### 结论
使用ref父组件第二次传递给子组件的数据(基本数据和引用数据):不能获取到最新的数据。
#### 使用reactive和ref传递参数给子组件,为啥ref第二次子组件无法获取最新的数据?而reactive可以
在 Vue 3 中,reactive 和 ref 在传递给子组件时的行为有所不同。
这也说明了 reactive 和 ref 是有区别的(屁话)。
#### ref 和 reactive 的区别
1,ref可以试用于任何数据类型,而reactive只适用于对象类型。
2,在js模块ref获取值,设置值,需要点value, 在模板中使用不需要点value。 而reactive都不需要。
3,ref可以完全替换整个对象,不会失去响应式。
reactive不能直接替换整个对象(否则会失去响应式)。需要逐个修改属性或使用 Object.assign
4,返回值不同。ref返回一个包装对象。reactive返回一个Proxy 对象
#### ref完全替换 不会失去响应式
```csharp
```

#### toRefs()解构ref,解构后仍然保持响应式
```csharp
```

#### toRef()解构reactive,解构后仍然保持响应式
```csharp
子组件
父页面
{{ infoObj }}
{{ props.infoObj }}
子组件
父页面
{{ infoObj }}
{{ props.infoObj }}
子组件
父页面
{{ infoObj }}
{{ props.infoObj }}
子组件
父页面
{{ infoObj }}
{{ props.infoObj }}
数据{{ objRef }}
``` #### reactive不能直接替换整个对象(会失去响应式) ```csharp const objReactive = reactive({ a: 1 }) // 错误方式(失去响应性) objReactive = { b: 2 } // 正确方式 或者逐个修改属性 Object.assign(objReactive, { b: 2 }) ``` #### [错误]:ref解构不会失去响应式。reactive解构或展开会失去响应式。[这句话不正确] ref和reactive解构都会失去响应式。都需要通过toRefs 或者toRef 来进行解决。 #### reactive 解构会失去响应式 ```csharp数据{{ name }} {{ age}}
```  #### ref 解构会失去响应式 ```csharpName: {{ name }}
Age: {{ age }}
Name: {{ name }}
Age: {{ age }}
数据{{ name }} {{ age}}
```  #### toRefs() 官网:将一个响应式对象转换为一个普通对象。 这个普通对象的[每个属性]都是指向源对象[相应属性的] ref。 每个单独的 ref 都是使用 toRef() 创建的。 我的理解: toRefs 可以把一个响应式对象转换为普通的对象。 该普通对象的每一个值都是ref。 由于变成了ref,所以我们使用每个属性的时候需要点value。 #### ref和reactive的使用场景 ref 适合于基本数据类型,reactive适合于对象类型。 ref 适合完全替换整个对象 我喜欢用ref定义基本数据类型和数组。对象使用reactive。 #### ref的本质 我理解的ref本质上是reactive的再封装。 使用reactive定义响应式数据时,若数据不是对象类型直接就返回了。 就不会进行后续的数据响应式处理了。 这也就是我只用reactive定义对象型响应式数据的原因本文来自投稿,不代表本站立场,如若转载,请注明出处:http//www.knowhub.vip/share/2/1932
- 热门的技术博文分享
- 1 . ESP实现Web服务器
- 2 . 从零到一:打造高效的金仓社区 API 集成到 MCP 服务方案
- 3 . 使用C#构建一个同时问多个LLM并总结的小工具
- 4 . .NET 原生驾驭 AI 新基建实战系列Milvus ── 大规模 AI 应用的向量数据库首选
- 5 . 在Avalonia/C#中使用依赖注入过程记录
- 6 . [设计模式/Java] 设计模式之工厂方法模式
- 7 . 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
- 8 . SQL 中的各种连接 JOIN 的区别总结!
- 9 . JavaScript 中防抖和节流的多种实现方式及应用场景
- 10 . SaltStack 远程命令执行中文乱码问题
- 11 . 推荐10个 DeepSeek 神级提示词,建议搜藏起来使用
- 12 . C#基础:枚举、数组、类型、函数等解析
- 13 . VMware平台的Ubuntu部署完全分布式Hadoop环境
- 14 . C# 多项目打包时如何将项目引用转为包依赖
- 15 . Chrome 135 版本开发者工具(DevTools)更新内容
- 16 . 从零创建npm依赖,只需执行一条命令
- 17 . 关于 Newtonsoft.Json 和 System.Text.Json 混用导致的的序列化不识别的问题
- 18 . 大模型微调实战之训练数据集准备的艺术与科学
- 19 . Windows快速安装MongoDB之Mongo实战
- 20 . 探索 C# 14 新功能:实用特性为编程带来便利