关于vue3中reactive()的局限性以及ref响应式更新

vue的文档中有关于reactive()局限性的描述,这里用自己的方式展现出来。

1.先写好一个测试网页
请添加图片描述
2.点击 reactive 添加 可以看到控制台输出了信息 并且成功添加 请添加图片描述
3.点击 reactive 赋值 可以看到控制台输出了信息 但是并没有赋值,可见此时响应式连接丢失
请添加图片描述
4. 点击ref 添加 可以看到这里reactive更新了数据请添加图片描述
5.再多次点击 reactive 添加 可见reactive数据没有更新请添加图片描述
6.最后点击 ref 赋值 可见 reactive数据又更新了请添加图片描述
个人总结:ref数据的修改会触发一次数据更新,这个数据更新会使所有没有响应式连接的数据也更新。

测试页面代码如下:

<script setup>
import { ref, reactive } from "vue";
let a = ref(["初始"]);
let b = reactive(["初始"]);
const log = ["ref 添加", "ref 赋值", "reactive 添加", "reactive 赋值"];
const add = () => "添加";
const equal = () => ["赋值"];
</script>

<template>
	<div>
		<h2 style="margin-right: 100px">
			ref
			<button
				@click="
					() => {
						a.push(add());
						console.log(log[0]);
					}
				">
				ref 添加
			</button>
			<button
				@click="
					() => {
						a = equal();
						console.log(log[1]);
					}
				">
				ref 赋值
			</button>
		</h2>
		{{ a }}
		<h2 style="margin-right: 100px">
			reactive
			<button
				@click="
					() => {
						b.push(add());
						console.log(log[2]);
					}
				">
				reactive 添加
			</button>
			<button
				@click="
					() => {
						b = equal();
						console.log(log[3]);
					}
				">
				reactive 赋值
			</button>
		</h2>
		{{ b }}
	</div>
</template>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值