vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue.js  ref 和 reactive用法

Vue.js 中 ref 和 reactive 的区别及用法解析

作者:陈小唬

在Vue.js中,ref主要用于创建响应式的引用,通过.value属性来访问和修改值,特别适用于需要频繁更改整个值的场景,而reactive则用于创建深度响应的对象或数组,本文给大家介绍Vue.js 中 ref 和 reactive 的区别及用法,感兴趣的朋友跟随小编一起看看吧

Vue.js 中 refreactive 的区别及用法

ref

import { ref } from 'vue';
const count = ref(0);
count.value++;  // 增加值
console.log(count.value);  // 访问值

直接赋值数组ref 创建的是一个包含 .value 属性的对象,这个 .value 属性持有实际的数据。无论如何改变这个 .value 的内容,Vue 都能检测到变化并进行更新。

import { ref } from 'vue';
const city1List = ref([]);
onMounted(() => {
  getCityByPid(0).then(res => {
    city1List.value = res.data.data;  // 直接赋值新数组
    console.log(city1List.value);  // 访问数组内容
  });
});

reactive

import { reactive } from 'vue'; const state = reactive({ count: 0 }); 
state.count++; // 增加 
count console.log(state.count); // 访问 count

不能直接赋值数组reactive 创建的是一个深度响应的对象或数组,Vue 只跟踪创建时的对象引用。如果直接重新赋值一个新的对象或数组,Vue 将无法跟踪新的引用,因为新的引用不会被自动转换为响应式对象。

import { reactive } from 'vue';
let city1List = reactive([]); 
onMounted(() => { 
getCityByPid(0).then(res => 
     { city1List.splice(0, city1List.length, ...res.data.data); // 使用数组方法修改内容 
     console.log(city1List); // 访问数组内容 
   }); 
);

关键区别和最佳实践

ref

创建一个响应式引用。使用 .value 来访问和修改值。可以直接通过 .value 重新赋值新的数组或对象。

reactive

实际解决方案

使用 reactive 更新数组时,可以使用 splice 清除并替换元素,这样保持了对原始响应数组的引用,Vue 会继续跟踪其内容的变化。

import { reactive } from 'vue';
let city1List = reactive([]);
onMounted(() => {
  getCityByPid(0).then(res => {
    city1List.splice(0, city1List.length, ...res.data.data);  // 清除现有数组并添加新项目
    console.log(city1List);  // 访问数组内容
  });
});

总结

ref 适用于需要频繁更改整个值的场景,因为它可以直接赋值新的数组或对象。

reactive 适用于需要深度响应的对象或数组,在修改其内部属性或元素时能保持响应性。

到此这篇关于Vue.js 中 ref 和 reactive 的区别及用法的文章就介绍到这了,更多相关Vue.js ref 和 reactive用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文