IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue3.0其它的composition API -> 正文阅读

[JavaScript知识库]vue3.0其它的composition API

一、shallowRef,shallowReactive

浅层次的响应式对象,当一个对象嵌套层数过多,可以用来性能优化,一般用不到

二、readonly,shallowReadonly

让一个响应式数据变为只读的,readonly是深只读,shallowReadonly是浅只读,例如应用于某些封装的数据或组件中引出的数据不希望被改

const user = reactive({
  name:"henry",
  job:{
    c:'1',
    a:{
      b:222
    }
  }
})
const user1 = readonly(user)
const user2 = shallowReadonly(user)

三、toRaw,markRaw

toRaw:获取一个由reactive生成的响应式对象转为普通对象

注意:

  • 如果是ref定义的对象,则通过.value的也可以获取源对象;
  • 还有改变源对象的数据,响应式对象也会跟着变化,但是不会引起页面的更新;

markRaw:标记一个对象,使其永远不再成为响应式对象

注意:这个对象是可改变的,只是非响应而已

应用场景:

  • 有些值不应该被设为响应式的,例如复杂的第三方库类等
  • 当渲染具有不可变数据源的大列表时,跳过响应式转换可以提高性能
let user = reactive({
  name:"henry"
})
//也可转化ref定义的对象类型,只是需要加.value
let user1 = toRaw(user)

let car = {
  name:'奔驰',
  price:40
}
//car的变化不再会体现在页面上
user.car = markRaw(car)

四、customRef

创建一个自定义的ref,并对其依赖项跟踪和更新触发进行显示控制
例如:实现防抖效果


<template>
  <input type="text" v-model="keyword" />
  <h3>{{ keyword }}</h3>
</template>

<script>
import { customRef } from "vue";

function useDebouncedRef(value, delay = 1000) {
  let timer;
  return customRef((track, trigger) => ({
    get() {
      console.log("get", value);
      track();
      return value;
    },
    set(newval) {
      if (timer) {
        clearTimeout(timer);
        timer = null;
      }
      timer = setTimeout(() => {
        console.log("set", newval);
        value = newval;
        trigger();
      }, delay);
    },
  }));
}
export default {
  setup() {
    let keyword = useDebouncedRef("henry");

    return {
      keyword,
    };
  },
};
</script>

五、provide, inject

实现祖与后代组件间的通信
祖组件用provide来提供数据,后代组件用inject来获取数据

//祖组件
setup() {
	const car = reactive({
	  name:'奔驰',
	  price:40
	})
	provide('car',car)
}
//后代组件
setup() {
	const car = inject('car')
	return {
	  car
	};
}

六、响应式数据的判断

  • isRef
  • isReactive
  • isReadonly
  • isProxy:检查一个对象是否由 reactive 或者 readonly 方法创建的代理
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:03:16  更:2022-03-03 16:07:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:41:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码