vue3学习——Ref全家桶

ref

接受一个内部值并返回一个响应式且可变的 ref 对象。ref 对象仅有一个 .value property,指向该内部值。

即let s=ref(val),   s.value==val

引入

import { ref , Ref } from "vue"

定义变量

//普通变量

let message:String = "hello"

//ref响应式变量

let message = ref<string>("hello")

修改

<div>{{message}}</div>

const change=()=>{

message.vale="bye"

}

注:template中默认取ref对象中的value值,script中需要对value进行操作

Ref

ref在ts中类型为Ref,定义方法为

let message : Ref<string>=ref("hello")

isRef

判断是不是一个ref对象,f返回boolean

let message1:String = "hello"

isRef(message1) //false

let message2 = ref<string>("hello")

isRef(message2) //true

shallowRef

创建一个跟踪自身 .value 变化的 ref,但不会使其值也变成响应式的

即 value 更改会更新视图  value下层属性值更改不会更新视图

引入

import { shallowRef , Ref } from "vue"

定义变量

let obj = shallowRef({

name:"皮皮鲁"

})

或者

type obj = {

name: string

}

let message: Ref<obj> = shallowRef({

name: "小满"

})

修改

obj.value.name="鲁西西“  //视图不更新

obj.value = { name:"鲁西西”} //视图更新

注:ref的更新会触发shallowRef视图更新

triggerRef 

配合shallowRef使用,接受一个shallowRef对象,强制更新页面DOM

const change = ()=>{

obj.value.name="鲁西西“ //视图未更新

triggerRef(obj) //视图更新

}

customRef

自定义ref 

customRef 是个工厂函数要求我们返回一个对象 并且实现 get 和 set

<script setup lang="ts">
import { Ref, shallowRef, triggerRef, customRef } from 'vue'
 
function Myref<T>(value: T) {
  return customRef((track, trigger) => {
    return {
      get() {
        track()
        return value
      },
      set(newVal: T) {
        console.log('set');
        value = newVal
        trigger()
      }
    }
  })
}
 
let message = Myref('皮皮鲁')
const changeMsg = () => {
  message.value = '鲁西西'
  // triggerRef(message)
}
</script> 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值