【vue3】基础知识点-组合式api-recative和ref函数

学习vue3,都会从基础知识点学起。了解setup函数,ref,recative,watch、computed、pinia等如何使用

今天说vue3组合式api,响应式函数recative和ref函数

recative函数:接收对象类型数据的参数传入,并返回一个响应式的对象,简单理解,你传一个对象给我,我返一个响应式的对象给你。

用法:
从vue包中导入recative函数,在< script setup>中执行recative函数并传入类型为对象的初始值,并使用变量接收返回值

<script setup>
//导入函数
import {
    
    recative} from 'vue'
//执行函数,传入一个对象类型的参数,并用变量接收
const state = recative({
    
    
count:0
})
const setCount = ()=>{
    
    
state.count++
}
</script>

<template>
  <div >
  <button @click="setCount ">{
    
    {
    
    state.count}}</button>
  </div>
</template>

在vue3中普通的对象是不具有响应式的,不会引起视图更新。

在vue3中,只有被声明为响应式的对象才能引起视图
更新。普通对象(非被Proxy包装的对象)不会自动触
发视图更新,,因为vue3使用了ES6的Proxy代理,可
以截获对象属性的访问和修改操作并进行响应式处理

普通对象不会被自动包装成响应式对象,要使用Vue提供的recative函数或ref函数进行显示声明

recative函数有个限制,它只接收对象类型数据的参数,如果简单类型数据的话,它是不支持的

那就要说到ref函数了

ref函数:接收简单类型或对象类型的数据并返回一个响应式的对象

用法:
从vue包中导入ref函数,在< script setup>中执行ref函数并传入初始值,并使用变量接收ref函数的返回值

<script setup>
//导入函数
import {
    
    ref} from 'vue'
//执行函数,传入参数[简单类型+复杂类型],并用变量接收
简单类型
const count = ref(0)
const setCount =()=>{
    
    
//修改ref产生的响应式对象数据,必须通过.value属性
console.log(count)
count.value++
}
//复杂类型
const state = ref({
    
    
count:0
})
const setCount = ()=>{
    
    
state.count.value++
}
</script>

<template>
  <div >
  //简单类型
  <button @click="setCount ">{
    
    {
    
    count}}</button>
  //复杂类型
   <button @click="setCount ">{
    
    {
    
    state.count}}
   //模板区不需要.value,可以直接展示
   </button>
  </div>
</template>

打印count,得到一个对象,对象中有个属性叫value,对应的值在value身上。所以需要用过.value去获取值
在这里插入图片描述
总结:
recative和ref都是用函数调用的方式生成响应式数据

recative不能处理简单类型的数据
ref参数类型支持更换但是必须通过.value访问修改
ref函数的内部实现依赖于recative函数

实际工作中ref函数更加灵活,看个人使用吧,毕竟没有明确的说法更支持哪种函数的使用

猜你喜欢

转载自blog.csdn.net/weixin_49668076/article/details/132167487