Vue3 Composition API(三)——生命周期钩子、Provide函数 和 Inject函数、封装Hook案例、setup顶层编写方式

一、生命周期钩子

我们前面说过 setup 可以用来替代 data 、 methods 、 computed 、watch 等等这些选项,也可以替代
生命周期钩子。

那么setup中如何使用生命周期函数呢?

  • 可以使用直接导入的 onX 函数注册生命周期钩子;

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、Provide函数 和 Inject函数

事实上我们之前还学习过Provide和Inject,Composition API也可以替代之前的 Provide 和 Inject 的选项

我们可以通过 provide来提供数据:
可以通过 provide 方法来定义每个 Property;

provide可以传入两个参数:

  • name:提供的属性名称;
  • value:提供的属性值;
    在这里插入图片描述

在 后代组件 中可以通过 inject 来注入需要的属性和对应的值:
可以通过 inject 来注入需要的内容;

inject可以传入两个参数:

  • 要 inject 的 property 的 name;
  • 默认值;
    在这里插入图片描述

在这里插入图片描述

三、数据的响应式

为了增加 provide 值和 inject 值之间的响应性,我们可以在 provide 值时使用 ref 和 reactive。
在这里插入图片描述

四、修改响应式Property

如果我们需要修改可响应的数据,那么最好是在数据提供的位置来修改:

  • 我们可以将修改方法进行共享,在后代组件中进行调用;
    在这里插入图片描述

五、封装Hook函数案例

  1. 计数器案例的Hook
    在这里插入图片描述

  2. 修改title的Hook
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 监听界面滚动位置的Hook
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  1. 使用 localStorage 存储和获取数据的Hook
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

<template><div><h2>当前计数:{{counter}}</h2><button @click="increment">+1</button><button @click="decrement">-1</button><h1>{{data}}</h1><button @click="changeData">修改data</button><p class="content"></p><div class="scroll"><div class="scroll-x">scrollX: {{scrollX}}</div><div class="scroll-y">scrollY: {{scrollY}}</div></div></div>
</template>
<script>
import useTitle from "./hook/useTitle";
import useCounter from "./hook/useCounter";
import useScrollPosition from "./hook/useScrollPosition";
import useLocalStorage from "./hook/useLocalStorage";
export default {name: "Home",setup(props, context) {// 1. 计数器const {counter,  increment, decrement} = useCounter()// 2. 修改titleconst titleRef = useTitle('我是默认的title')setTimeout(() => {titleRef.value = 'hahaha'}, 4000)// 3. 获取滚动位置const {scrollX, scrollY} = useScrollPosition()// 4.保存数据const data = useLocalStorage('user', {name: 'zep', age: 22})const changeData = () => {data.value = {name: 'haha', age: 18}}return {counter, increment, decrement,scrollX, scrollY,data, changeData}}
}
</script><style scoped>.content {width: 3000px;height: 5000px;}.scroll {position: fixed;right: 30px;bottom: 30px;}
</style>

六、补充:setup顶层编写方式(实验性特性,不稳定)

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单尺度二维离散小波重构(逆变换)idwt2

clc,clear all,close all; load woman; %单尺度二维离散小波分解。分解小波函数haar [cA,cH,cV,cD]dwt2(X,haar); %单尺度二维离散小波重构(逆变换) Yidwt2(cA,cH,cV,cD,haar); figure; subplot(1,2,1),imshow(X,map),title(原始图像); subplot(1,2,2),imshow(Y,map),title(重构…

python导出数据顿号做分隔符_Python语言和matplotlib库做数据可视化分析

这是我的第51篇原创文章&#xff0c;关于数据可视化分析。阅读完本文&#xff0c;你可以知道&#xff1a;1 Python语言的可视化库—matplotlib?2 使用matplotlib实现常用的可视化&#xff1f;0前言数据记者和信息设计师&#xff0c;David McCandless&#xff0c;在他的TED演讲…

Vue3 高级语法(一)—— h函数、jsx

一、认识h函数 Vue推荐在绝大数情况下使用模板来创建你的HTML&#xff0c;然后一些特殊的场景&#xff0c;你真的需要JavaScript的完全编程的能力&#xff0c;这个时候你可以使用渲染函数 &#xff0c;它比模板更接近编译器&#xff1b; 前面我们讲解过VNode和VDOM的改变&#…

android学习笔记30——AndroidMainfest.xml

Manifest.xml文件的职责:指定APP的包名.声明四大组件, 以及启动方式.指定APP运行的进程名称.指定APP权限.指定最小API版本.指定需要连接的库. Manifest.xml的格式:<?xml version"1.0" encoding"utf-8"?> <manifest> <uses-permission /…

华三交换机ping大包命令_华三交换机常用命令

1、查看全部端口的配置display current-configurationdisplay current-configuration interfacedis cu int2、查看指定端口的配置display current-configuration interface 或interface 进入端口配置模式display this 查看当前端口生效配置其中int-type和int-number为端口…

Vue3 高级语法(二)—— 自定义指令、Teleport、Vue插件

一、认识自定义指令 在Vue的模板语法中我们学习过各种各样的指令&#xff1a;v-show、v-for、v-model等等&#xff0c;除了使用这些指令之外&#xff0c;Vue也允许我们来自定义自己的指令。 注意&#xff1a;在Vue中&#xff0c;代码的复用和抽象主要还是通过组件&#xff1b;通…

自己封装的一个原生JS拖动方法。

代码&#xff1a; 1 function drag(t,p){2 3 var point p || null,4 target t || null,5 resultX 0,6 resultY 0;7 8 (!point)? point target : ; //如果没有拖动点&#xff0c;则拖动点默认为整个别拖动元素9 10 function getPos(…

nvidia的jetson系列的方案_NVIDIA Jetson Xavier NX开发者套件主要应用于自主机器边缘计算产品系列...

NVIDIA副总裁&#xff0c;边缘计算业务总经理Deepu Talla表示&#xff1a;“NVIDIA已在多个行业中创建并优化了大量AI软件。如今&#xff0c;有了云原生技术的加持&#xff0c;我们在嵌入式和机器人领域的客户就能通过高性能、低功耗的Jetson系列产品&#xff0c;受益于软件的创…

Vue-Router4 学习笔记

一、URL的hash 前端路由是如何做到URL和内容进行映射呢&#xff1f;监听URL的改变。 URL的hash也就是锚点(#), 本质上是改变window.location的href属性&#xff1b; 我们可以通过直接赋值location.hash来改变href, 但是页面不发生刷新&#xff1b; hash的优势就是兼容性更好&am…

转:VC中MessageBox的常见用法

一、关于MessageBox 消息框是个很常用的控件&#xff0c;属性比较多&#xff0c;本文列出了它的一些常用方法&#xff0c;及指出了它的一些应用场合。 1.MessageBox("这是一个最简单的消息框&#xff01;"); 2.MessageBox("这是一个有标题的…

python subprocess communicate_Python中的Subprocess模块

以前我一直用os.system()处理一些系统管理任务,因为我认为那是运行linux命令最简单的方式.我们能从Python官方文档里读到应该用subprocess 模块来运行系统命令.subprocess模块允许我们创建子进程,连接他们的输入/输出/错误管道&#xff0c;还有获得返回值。subprocess模块打算来…

Vuex4学习笔记

一、Vuex的状态管理 二、Vuex的安装 我们这里使用的是vuex4.x&#xff0c;安装的时候需要添加 next 指定版本&#xff1b; npm install vuexnext三、创建Store 每一个Vuex应用的核心就是store&#xff08;仓库&#xff09;&#xff1a; store本质上是一个容器&#xff0c;它…

在局域网搭建一个带 web 操作页面的 git 版本服务器 - Gitlab

以下内容为本人的著作&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「englyf」https://mp.weixin.qq.com/s/Br0ETd_aNffEZoTAba03Bw 最近到了新团队&#xff0c;只有几部新电脑&#xff0c;然后啥也没有了。老江说需要一个管理工程代码的 git 版本服务器&…

div中iframe高度自适应问题

网页分为上、中、下三部分&#xff0c;上、下高度固定中间高度自适应&#xff1b;中间分为左、右两部分&#xff0c;左边宽度固定&#xff0c;右边宽度自适应。现在右侧div是宽度和高度都是自适应&#xff0c;右侧div里有个IFrame&#xff0c;想让IFrame自适应外部div的宽度和高…

python日志模块备份_Python Logging模块 输出日志颜色、过期清理和日志滚动备份

#coding:utf-8importloggingfrom logging.handlers importRotatingFileHandler # 按文件大小滚动备份import colorlog #控制台日志输入颜色importtimeimportdatetimeimportoscur_path os.path.dirname(os.path.realpath(__file__)) #log_path是存放日志的路径log_path os.path…

JS高级——手写call()、apply()、bind()

0、call、apply、bind的区别 bind&#xff0c;call&#xff0c;apply的作用都是用来改变this指向的 call方法 call方法的第一个参数是this的指向 后面传入的是一个参数列表&#xff08;注意和apply传参的区别&#xff09;。当一个参数为null或undefined的时候&#xff0c;函数中…

ubyntu 链接mysql_ubuntu mysql远程连接

ubuntu mysql远程连接http://blog.csdn.net/helen_shw/archive/2010/01/22/5224524.aspxkikikiki-desktop:/etc/apache2mysql error number 2003Cant connect to MySQL server xxx.xxx.xxx.xxx (10061)在ubuntu 9.04中默认安装了mysql&#xff0c;默认只能本地访问&#xff0c;…

js文章QQ空间分享

<!--示例一--> <div id"ckepop" classfeixiangjias> <a href"javascript:" class"jiathis jiathis_txt jtico jtico_jiathis" target"_blank">分享到&#xff1a;</a> <a class"jiathis_button_qzo…

JS高级——深入剖析函数中的this指向问题

一、this到底指向什么呢&#xff1f; 我们先说一个最简单的&#xff0c;this在全局作用域下指向什么&#xff1f; 这个问题非常容易回答&#xff0c;在浏览器中测试就是指向window 但是&#xff0c;开发中很少直接在全局作用于下去使用this&#xff0c;通常都是在函数中使用…

日志测试法

/*** 写入日志*/ function write2log($content,$filenamelog) {$myfile fopen($filename.".txt", "a") or die("Unable to open file!");$txt date(Y-m-d H:i:s)."\t".$content."\r\n";fwrite($myfile, $txt);fclose($myf…