在 UniApp(或 Vue 3)中,声明一个空对象可使用下面这2种写法:

// 写法1
const a = ref(null);// 写法2
const a = ref({});

 在UniApp中,const a = ref()用法概述:

用途:

创建一个响应式引用(Reactive Reference),通常用于 Vue 3 的 Composition API。

特点:

ref() 将普通值(如 null、数字、字符串等)包装成一个响应式对象,通过 .value 访问实际值。在模板中自动解包(无需写 .value)。

这两种写法的区别:

1. const a = ref(null)
初始值:null(明确表示“无值”)。

特点:

适合用于 延迟赋值 或 可选数据,比如异步请求返回前初始化为 null。

直接访问 a.value 时需做非空校验(否则可能报错)。

 示例代码:

import {apiUserInfo} from "@/api/api.js"
import {ref} from "vue"//声明一个null对象
const userInfo = ref(null)//将接口获取到的值赋值给userInfo
function getUserInfo(){apiUserInfo().then(res=>{userInfo.value = res.data})
}

模板中使用,下面来自于写法,如果用户信息中包含城市则取城市的值,如果没有则取省份的值,再没有则取国家的值

<view class="ip">{{userInfo.IP}}
</view>
<view class="address">来自于:{{userInfo.address.city||userInfo.address.province||userInfo.address.conuntry}}
</view>

在外层,为防止userInfo报错,需添加v-if判断

<view class="userLayout pageBg" v-if="userInfo">

 

2. const a = ref({})
初始值:空对象 {}。

特点:

适合需要 立即操作对象属性 的场景,避免 null 导致的报错

即使数据未加载,也可以安全访问属性(如 a.value.key 返回 undefined,而不会报错)。

示例代码:

<script setup>import {ref} from 'vue'import { apiNoticeDetail }  from "@/api/api.js"import {onLoad} from "@dcloudio/uni-app"const noticeInfo = ref({})let noticeId;onLoad((e)=>{noticeId = e.id//在onLoad执行才能拿到参数Id的值getNoticeDetail()})function getNoticeDetail(){apiNoticeDetail({id:noticeId}).then(res=>{noticeInfo.value = res.data})}</script>

上面的代码中将noticeInfo声明为{},

模板中使用无需添加v-if判断而不报错

<view class="info"><view class="item">{{noticeInfo.author}}</view><view class="item"><uni-dateformat :date="noticeInfo.publish_date" format="yyyy-MM-dd hh:mm:ss"></uni-dateformat></view>
</view>

关键区别对比

特性ref(null)ref({})
初始值类型null空对象 {}
访问属性安全性直接访问 a.value.key 会报错返回 undefined(不会报错)
适用场景数据未加载前明确无值需要立即操作对象结构的场景
模板中渲染需配合 v-if 判断可直接渲染(如 {{ a.value.key }}

 推荐:

ref({}) 处理表单?
  • 表单通常需要双向绑定,初始化为 {} 可避免模板中频繁的 v-if 判断

需要明确区分“无数据”和“空数据” → ref(null)

需要安全访问嵌套属性 → ref({})

扩展1:ref() 的其他初始值

  • ref(0):适合数字类型的初始值(如计数器)。

  • ref(''):适合字符串初始值(如输入框)。

  • ref([]):适合数组初始值(如列表数据)。

扩展2:

let:需要重新赋值的变量(如计算临时值、循环计数器)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/87119.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87119.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/87119.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在mac下手动编译迁移的android版webrtc组件

我原先使用的android版webrtc是在linux下编译的&#xff0c;现在因为某些原因需要把整个库迁移到mac下编译。 把代码迁移完后&#xff0c;正常是需要通过gclient sync 重新构建编译环境&#xff0c;但是由于网络限制等方面原因&#xff0c;会导致完成的比较慢。 在摸索一阵后…

Linux 命令:mkdir

Linux mkdir 命令详细教程 一、mkdir 命令的基本功能 mkdir&#xff08;Make Directory&#xff09;是 Linux 系统中用于创建新目录&#xff08;文件夹&#xff09;的基础命令。它支持一次性创建单个或多个目录&#xff0c;以及递归创建多层目录结构&#xff0c;是文件系统操…

Django 数据迁移全解析:makemigrations migrate 常见错误与解决方案

1. 迁移机制与底层原理 在 Django 中&#xff0c;ORM&#xff08;Object-Relational Mapping&#xff09;是连接模型&#xff08;Model&#xff09;和数据库结构的桥梁。Django 鼓励开发者通过编写 Python 类&#xff08;模型&#xff09;来定义业务数据结构&#xff0c;而不是…

SuperGlue:使用图神经网络学习特征匹配

摘要 本文提出了 SuperGlue&#xff0c;一种神经网络&#xff0c;用于通过联合寻找对应关系并排除不可匹配点来匹配两组局部特征。匹配结果通过求解一个可微的最优传输问题来估计&#xff0c;该问题的代价由一个图神经网络预测。我们引入了一种基于注意力的灵活上下文聚合机制…

ssh -T git@github.com失败后解决方案

这个错误表示你的 SSH 连接无法到达 GitHub 服务器。以下是详细解决方案&#xff0c;按照优先级排序&#xff1a; 首选解决方案&#xff1a;使用 SSH over HTTPS&#xff08;端口 443&#xff09; 这是最有效的解决方案&#xff0c;因为许多网络会阻止 22 端口&#xff1a; …

从苹果事件看 ARM PC市场的未来走向

最近&#xff0c;苹果宣布部分搭载 Intel 处理器的 Mac 不再支持最新的 macOS 系统更新&#xff0c;这一消息犹如一颗石子投入平静湖面&#xff0c;激起层层涟漪。它不仅让 Intel 芯片在 Mac 产品线上彻底成为历史&#xff0c;也促使我们重新审视 PC 行业的发展脉络&#xff0c…

vue + element ui 实现超出宽度展示..,鼠标移入显示完整内容

vue element ui 实现超出宽度展示…&#xff0c;鼠标移入显示完整内容 代码理念&#xff1a; 当高度大于对应行数的高度 则说明需要展示"…" 子组件 <template><div class"tooltip"><div ref"tooltipRef" :class"[tooltip…

HarmonyOSNext应用无响应全解析:从机制到实战的卡死问题排查

HarmonyOSNext应用无响应全解析&#xff1a;从机制到实战的卡死问题排查 ##Harmony OS Next ##Ark Ts ##教育 本文适用于教育科普行业进行学习&#xff0c;有错误之处请指出我会修改。 喂喂喂&#xff01;应用卡成PPT了&#xff1f;点啥都没反应&#xff1f;别慌&#xff01…

git 迁移之获取原库所有分支

以下是一个安全的 Bash 脚本&#xff0c;用于将远程 Git 仓库的所有分支检出到本地&#xff08;自动跳过已存在的分支&#xff09;&#xff1a; #!/bin/bash# 获取所有远程分支&#xff08;排除 HEAD&#xff09; remote_branches$(git branch -r | grep -v HEAD\|->)# 循环…

设计模式 | 适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09; 是结构型设计模式中的连接器大师&#xff0c;它允许不兼容接口的类能够协同工作。本文将深入探索适配器模式的核心思想、实现技巧以及在C中的高效实践&#xff0c;解决现实开发中的接口兼容性问题。 为什么需要适配器模式 …

RTL 级机器人电机控制器的 FPGA 设计

借助Verilog&#xff0c;在FPGA中实现了带编码器的两台电机的电机控制系统的RTL级设计。 介绍 借助硬件描述语言 (HDL) Verilog 和 AMD Vivado 设计套件&#xff0c;在 AMD Spartan-7 FPGA 中实现带编码器的两个电机的控制器系统的 RTL 设计。 在这个项目中&#xff0c;使用了搭…

4_Flink CEP

Flink CEP 1、何为CEP&#xff1f; CEP&#xff0c;全称为复杂事件处理&#xff08;Complex Event Processing&#xff09;&#xff0c;是一种用于实时监测和分析数据流的技术。 CEP详细讲解&#xff1a; CEP是基于动态环境的事件流的分析技术&#xff0c;事件是状态变化&am…

容器基础知识2-K8s 和 Docker 的关系与管理逻辑详解

K8s 和 Docker 的关系与管理逻辑详解 一、先搞懂&#xff1a;Docker 和 K8s 分别是做什么的&#xff1f; Docker&#xff08;容器工具&#xff09;&#xff1a;好比「集装箱工厂」&#xff0c;负责把应用和依赖打包成标准化容器&#xff08;类似集装箱&#xff09;&#xff0…

QT MaintenanceTool 登录无法找到 QtAccount 凭据

亲测有效&#xff1a;QT6 Maintenance Tool 登录问题_qt6 maintenancetool-CSDN博客 将ini这个配置文件移出文件夹后&#xff0c;在切换自己账户登录即可

华为云Flexus+DeepSeek征文|利用华为云一键部署 Dify 平台并接入 DeepSeek 大模型,构建长篇文章生成助手

目录 前言 1 华为云一键部署 Dify 平台 1.1 华为云 Dify 平台介绍 1.2 部署过程介绍 1.3 登录 Dify 平台 2 接入华为云 ModelArts Studio 中的 DeepSeek 大模型 3 构建长篇文章生成助手 3.1 简要介绍长篇文章生成助手 3.2 开始节点 3.3 生成标题和大纲&#xff08;LL…

js的一些基础概念总结

1.变量声明 首先js变量声明有三种&#xff0c;var&#xff0c;const&#xff0c;let&#xff0c;这三种变量声明中我们第一优先使用const&#xff0c;需要改变这个值的时候我们用ley&#xff0c;var是尽量不去使用。 那么我们现在来总结一下三种声明变量的区别。首先是var let …

防 XSS和CSRF 过滤器(Filter)

会话管理存在问题&#xff1a; 1.服务集群部署或者是分布式服务如何实现会话共享 2.会话的不同存储地方的安全性问题 答&#xff1a; 会话共享 可以使用后端集中管理(redis)或者客户端管理 &#xff08;jwt&#xff09;&#xff1b; 存储安全性 这个还真的没有太好的方式&…

鸿蒙容器组件 WaterFlow、FlowItem解析:动态瀑布流布局实践

一、引言&#xff1a;不规则布局的智能化解决方案 在图片社交、电商导购、资讯聚合等现代应用场景中&#xff0c;瀑布流布局以其灵活的空间利用率和自然的视觉流动感成为界面设计的重要选择。鸿蒙提供的 WaterFlow 与 FlowItem 组件&#xff0c;通过智能布局算法与声明式语法&…

概率密度基本概念

概率密度&#xff08;Probability Density&#xff09;是概率论中用于描述随机变量分布的一种方式&#xff0c;特别适用于连续随机变量。它并不是一个概率值&#xff0c;而是表示单位范围内的概率大小或“浓度”。更具体地说&#xff0c;概率密度表示在某个特定值附近&#xff…

10-1 MySQL 索引优化与查询优化

10-1 MySQL 索引优化与查询优化 文章目录 10-1 MySQL 索引优化与查询优化1. 数据准备2. 索引失效案例2.1 索引字段&#xff1a;全值匹配最优2.2 索引字段&#xff1a;最佳左前缀法则2.3 主键插入顺序2.4 索引字段进行了&#xff1a;计算、函数、类型转换(自动或手动)导致索引失…