ref

vue3的ref和reactive-LMLPHP
vue3的ref和reactive-LMLPHP

Ref作用:定义一个响应式的数据。
Ref语法:

  • 创建一个包含响应式数据的引用对象
    vue3的ref和reactive-LMLPHP

  • JS中操作数据,使用XXX.value。

  • 模板中使用,不需要value,直接{{XXX}}。

Ref接收的数据类型:基本类型,对象类型。

const a = ref(1);  
const a = ref('1');  
const a = ref(true);  
const a = ref({});  
const a = ref([])

基本数据类型:响应式依靠的是object.defineProperty()的get和set。
对象类型:内部求助了vue3的一个新函数——reactive函数。

Reactive函数

<script setup>  
import { ref, reactive } from 'vue';  
  
// 数据  
let name = ref('张三');  
let age = ref(18);  
let job = reactive({  
  type: '前端工程师',  
  salary: '30k',  
  a: {  
    b: {  
      c: 666  
    }  
  }  
});  
let hobby = reactive(['抽烟', '喝酒', '烫头']);  
  
// 方法  
function changeInfo() {  
  name.value = '李四';  
  age.value = 48;  
  job.type = 'UI设计师';  
  job.salary = '60k';  
  job.a.b.c = 999;  
  hobby[0] = '学习';  
}  
</script>

语法:const 代理对象 = reactive(原对象),接受一个对象或数组,返回一个代理对象(proxy的实例对象,简称proxy对象)。

Reactive定义的响应式数据是’深层次’的。
内部基于ES6的proxy实现,通过代理对象操作源对象内部数据进行操作。

对比reactive和ref

  1. 从定义数据角度对比
  1. 从原理角度对比
  1. 从使用角度对比
04-24 09:40