当前位置: 首页 > news >正文

vue3 自定义hook函数 和 toRef

hook本身是一个函数,把setup 函数中使用的Composlition API进行了封装,也就是代码的复用性更强。

toRef 作用就是创建一个ref对象,其value值指向另一个对象中的某个属性值。 语法: toRef(person,‘name’)

如果有多个的对象,可以直接用 toRefs(‘一个参数’)/ 使用可以用 …toRefs(‘参数’)

在这里插入图片描述
代码实例
我们假设及时获取页面鼠标位置即打点。

<template>
  <div class="hello">
    <h2>当前求和: {{ sum }}</h2>
    <button @click="sum++">加1</button>
    <hr />
    <h2>当前坐标x: {{ point.x }}, y:{{ point.y }}</h2>
  </div>
</template>

<script>
import { ref, reactive, onMounted, onBeforeUnmount } from "vue";
export default {
  name: "HelloWorld",
  props: {
    msg: String,
  },
  setup() {
    let sum = ref(0);
    let point = reactive({
      x: 0,
      y: 0,
    });

    function savePoint(event) {
      point.x = event.pageX;
      point.y = event.pageY;
      console.log(event.pageX, event.pageY);
    }

    onMounted(() => {
      window.addEventListener("click", savePoint);
    });

    onBeforeUnmount(() => {
      window.removeEventListener("click", savePoint);
    });
    return {
      sum,
      point,
    };
  },
};
</script>

在这里插入图片描述
如果要是有人要用这个组件就要变化,进行封装
在这里插入图片描述
然后封装一下
在这里插入图片描述
在引入下在这里插入图片描述
toRef
在这里插入图片描述

相关文章:

  • git add . 的时候遇到warning: LF will be replaced by CRLF in ...... 解决办法
  • vue3 祖孙组件通讯传值 provide 与 inject 以及 响应式数据的判断
  • Unity3D 学习——入门资料整理
  • vue3父子组件传值 以及注意事项
  • “通过jumpserver远程登录linux服务器,rz上传文件速度过慢”问题的解决
  • vue项目 初始化 解决页面闪屏问题 v-cloak
  • Excle中LOOKUP经典用法
  • vue3实现 TodoList 运用到的点 组件传值props, ref, onMounted, reactive, toRefs, watch
  • 前端——运用@media实现网页自适应中的几个关键分辨率
  • vue3 实现 todoList 知识点 reactive, toRefs, computed, watchEffect, filters,localStorage数据存储、获取
  • vue 项目 前端 模拟后端接口数据(vue2,vue3)
  • JSON.toJSONString的jar包问题
  • vue3-cli创建项目后每个文件的第一行都爆红,或者每个文建都 : No Babel config file detected for...
  • vue3路由传参 query 、params
  • Dom4j把xml转换成Map(非固定格式)
  • CSS 专业技巧
  • JDK9: 集成 Jshell 和 Maven 项目.
  • PAT A1050
  • python学习笔记 - ThreadLocal
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • spring security oauth2 password授权模式
  • Spring-boot 启动时碰到的错误
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • (2.2w字)前端单元测试之Jest详解篇
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (python)数据结构---字典
  • (力扣题库)跳跃游戏II(c++)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (四)Linux Shell编程——输入输出重定向
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • ***详解账号泄露:全球约1亿用户已泄露
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET BackgroundWorker
  • .net 发送邮件
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • @NestedConfigurationProperty 注解用法
  • @property @synthesize @dynamic 及相关属性作用探究
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [CISCN2019 华东南赛区]Web11
  • [c语言]小课堂 day2
  • [leetcode]_Symmetric Tree
  • [LeetCode]—Rotate Image 矩阵90度翻转
  • [MySQL]数据库基础
  • [No000010F]Git8/9-使用GitHub
  • [NSSRound#16 Basic]RCE但是没有完全RCE
  • [RK3568][Android11]内核Oops日志分析
  • [Spring Boot 3] 整合NoSQL与构建RESTful服务
  • [SQL]实现按照指定分割分分割字符串
  • [SystemC]SystemC Hierarchical Channels