vue3--shallowReactive、shallowRef、readonly、shallawReadonly、toRaw、markRaw、customRef、provide、inject

vue3–所有api:https://vuejs.org/api/

*shallowRef

*:只处理基本数据类型的响应式,不进行对象的响应式处理。

shallowReactive

:只处理对象最外属性的响应式(浅响应式)。
如果有一个对象数据,结构比较深,但变化时只是外层属性变化===>shallowReative.
如果有一个对象数据,后续功能不会修改该对象中的属性,而是生新的对象来替换 ====>shallowRef

readonly

:让一个响应式数据变为只读的(深只读)

shallowReadonly

:让一个响应式数据变为只读的(浅只读)
应用场景:不希望数据被修改时。

*toRow

*:将一个有reactive生成的响应式对象转为普通对象。
使用场景:用于读取响应式对象对应得普通对象,对这个普通对象的所有操作,不会引起也没更新。

**markRow

:
作用**:标记一个对象,使其永远不会在成为响应式对象。
应用场景
1、有些值不应被设置为响应式的,列如复杂的第三方类库等。
2、当渲染具有不可变数据源的大列表时,跳过响应式转换可以提高性能。

给一个响应对象上可以追加一个非响应式的数据给这个响应式对象上

**customRef

:自定义一个ref**
https://vuejs.org/api/reactivity-advanced.html#customref

防抖动案例:

<template>
<input type="text" v-model="keyWord">
  <h2>{{keyWord}}</h2>
</template>

<script>
import { ref,customRef } from "vue";
export default {
  name: "CustomRefDemo",
  setup(props, context) {
    
    // 自定义一个ref---名为:myRef
    function myRef(value,delay){
      let timer
      return customRef((track,trigger)=>{
        return{
          get(){
            console.log(`有人从myRef这个容器中读取数据了: ${value}`)
             track()//通知vue追踪数据的变化(提前和get商量一下,让他认为这个value是有用的)
            return value
           
          },
          set(newValue){
            console.log(`有人从myRef这个容器中修改数据了: ${newValue}`)
            clearTimeout(timer)
            timer = setTimeout(()=>{
              value = newValue
              trigger()//通知vue重新解析模板
            },delay)
            
          },
        }
      })
    }

    let keyWord = myRef('hello',500)//使用程序员自定义的ref
    return {
      keyWord
    };
  },
};
</script>

结果:
在这里插入图片描述

provide与inject用于实现祖孙间通信

https://cn.vuejs.org/api/composition-api-dependency-injection.html#inject

响应式数据判断:
isRef:检查一个值是否式一个ref对象
isReactive:检查一个对象是否有reactive创建的响应式代理
isReadonly:检查一个对象是否有readonly创建的只读代理
isProxt:检查一个对象是否是由reactive或者readonly方法创建的代理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3-count-to是一个用于实现滚动数字效果的Vue.js插件。它是基于Vue3版本开发的,可以用于数据可视化大屏开发等场景。在Vue3中使用vue-count-to插件可能会出现一些问题,因为Vue3的语法和Vue2有所不同。可以通过引用和引用中提供的代码来了解如何在Vue3中使用vue3-count-to插件。具体来说,可以使用"import"语句引入vue3-count-to插件的CountTo组件,并使用"ref"函数来创建一个可变的引用对象来存储HTMLElement元素。然后,在模板中使用CountTo组件,并传递相应的属性值来配置滚动数字的效果。例如,可以设置"startVal"表示起始值,"endVal"表示结束值,"duration"表示滚动时长等等。同时,在模板中还可以使用其他Vue3的语法,如路由导航等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [vue3-count-to 数字跳动vue3.0](https://blog.csdn.net/wwf1225/article/details/123917275)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [vue3使用vue-count-to组件](https://blog.csdn.net/qq_38330707/article/details/111514478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值