| |
|
开发:
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学习之旅--Composition-API-进阶篇 -> 正文阅读 |
|
[JavaScript知识库]Vue3学习之旅--Composition-API-进阶篇 |
文章目录vue3笔记 Vue3-Composition-API(二)Reactive-APIReactive判断的API
toRefs如果我们使用ES6的解构语法,对reactive返回的对象进行解构获取值,那么之后无论是修改结构后的变量,还是修改reactive 返回的state对象,数据都不再是响应式的: 那么有没有办法让我们解构出来的属性是响应式的呢?
这种做法相当于已经在**state.name和ref.value之间建立了 链接,**任何一个修改都会引起另外一个变化; toRef如果我们只希望转换一个reactive对象中的属性为ref, 那么可以使用toRef的方法:
ref其他的APIunref 如果我们想要获取一个ref引用中的value,那么也可以通过unref方法:
isRef 判断值是否是一个ref对象。 shallowRef 创建一个浅层的ref对象; triggerRef 手动触发和 shallowRef 相关联的副作用:(比如页面的响应式刷新,就是刷新响应式数据以后的副作用) customRef创建一个自定义的ref,并对其依赖项跟踪和更新触发进行显示控制: 它需要一个工厂函数,该函数接受 track 和 trigger 函数作为参数;并且应该返回一个带有 get 和 set 的对象; 这里我们使用一个的案例: 对双向绑定的属性进行debounce**(节流)**的操作; computed在前面我们讲解过计算属性computed:当我们的某些属性是依赖其他状态时,我们可以使用计算属性来处理
如何使用computed呢?
侦听数据的变化在前面的Options API中,我们可以通过watch选项来侦听data或者props的数据变化,当数据变化时执行某一些 操作。 在Composition API中,我们可以使用watchEffect和watch来完成响应式数据的侦听;
watchEffect当侦听到某些响应式数据变化时,我们希望执行某些操作,这个时候可以使用 watchEffect。 我们来看一个案例:
watchEffect的停止侦听如果在发生某些情况下,我们希望停止侦听,这个时候我们可以获取watchEffect的返回值函数,调用该函数即可。 比如在上面的案例中,我们age达到25的时候就停止侦听: watchEffect清除副作用什么是清除副作用呢?
在我们给watchEffect传入的函数被回调时,其实可以获取到一个参数:onInvalidate
setup中使用ref在讲解 watchEffect执行时机之前,我们先补充一个知识:在setup中如何使用ref或者元素或者组件? 其实非常简单,我们只需要定义一个ref对象,绑定到元素或者组件的ref属性上即可; watchEffect的执行时机默认情况下,组件的更新会在副作用函数执行之前: 如果我们希望在副作用函数中获取到元素,是否可行呢? 结果如上图 我们会发现打印结果打印了两次:
调整watchEffect的执行时机如果我们希望在第一次的时候就打印出来对应的元素呢?
我们可以设置副作用函数的执行时机: flush 选项还接受 sync,这将强制效果始终同步触发。然而,这是低效的,应该很少需要。 Watch的使用watch的API完全等同于组件watch选项的Property:
与watchEffect的比较,watch允许我们:
侦听单个数据源watch侦听函数的数据源有两种类型: 侦听器数据源可以是返回值的 getter 函数,也可以直接是
下面这种方式就侦听失败了,新值旧值是一样的。 方式一 方式二 侦听多个数据源侦听器还可以使用数组同时侦听多个源: 侦听响应式对象如果我们希望侦听一个数组或者对象,那么可以使用一个getter函数,并且对可响应对象进行解构: watch的选项如果我们希望侦听一个深层的侦听,那么依然需要设置 deep 为true: 也可以传入 immediate 立即执行; 如果传入的是一个reactive对象,默认情况就是会自动进行深度侦听的,输入获取到的新值旧值都是还是同一个对象 设置深度侦听 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/27 6:00:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |