每天都要开心()哇:

项目开发过程中,我们会遇到一些情况,就是多个组件都可以重复使用的一部分代码逻辑,功能函数,我们想要复用,这可怎么办呢?

VUE2我们是怎么做的呢?

  • 在vue2 中有一个东西:Mixins 可以实现这个功能
  • mixins就是将这些多个相同的逻辑抽离出来,各个组件只需要引入mixins,就能实现代码复用
  • 弊端一: 会涉及到覆盖的问题
  • 组件的data、methods、filters会覆盖mixins里的同名data、methods、filters
  • 弊端二:隐式传入,变量来源不明确,不利于阅读,使代码变得难以维护

VUE3中我们怎么处理复用代码逻辑的封装呢?

  • Vue3中我们可以: 自定义Hook
  • Vue3 的 hook函数 相当于 vue2 的 mixin, 但是: hooks 是函数
  • Vue3 的 hook函数 可以帮助我们提高代码的复用性, 让我们能在不同的组件中都利用 hooks 函数

说那么多,不如直接上代码来看差异

  • 先来一段我们的一把梭代码,代码没有复用,全都放到当前组件
<template><img alt="Vue logo" src="./assets/logo.png" /><div>VUE3中的HOOKS</div><button @click="setNumber">点击此按钮,调用setNumber函数,数字会+1:{{myNumber}}</button><button @click="a++">点击此按钮,数字会+1:{{a}}</button><button @click="b--">点击此按钮,数字会-1:{{b}}</button>
</template>
<script>
import { reactive,ref,computed,watch,watchEffect } from "vue";
export default {setup(){const  myNumber = ref(0)const  a = ref(0)const  b = ref(0)const setNumber = ()=>{myNumber.value = myNumber.value+1;}watch([a,b],([newA,newB],[oldA,oldB])=>{console.log('newA,oldA:')console.log(newA,oldA)console.log('newA,oldB:')console.log(newA,oldB)})return{myNumber,a,b,setNumber}}
}
</script>
<style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;}
button{display: block;margin: 0 auto;}
</style>
  • 执行代码看一下下哇~~
  • 上面是原始的写法,如果这里面好几个变量我们需要复用怎么办呢?比如说这几个变量,函数,我们需要在其他函数里也用到,我们要怎么办呢??
  • 下面我们就开始采用hook的方法试一把~~
  • 我们创建一个新的文件,src\common-hooks\numberChange.js
  • 把上面的代码,剪切到src\common-hooks\numberChange.js,然后用这个套起来:export const useNumber =() =>{}
import { ref,watch } from "vue";
export const useNumber =() =>{const  myNumber = ref(0)const  a = ref(0)const  b = ref(0)const setNumber = ()=>{myNumber.value = myNumber.value+1;}watch([a,b],([newA,newB],[oldA,oldB])=>{console.log('newA,oldA:')console.log(newA,oldA)console.log('newA,oldB:')console.log(newA,oldB)})return{myNumber,a,b,setNumber}
}

  • 改写一下我们的模板代码里的script
<script>
import { useNumber } from "./common-hooks/numberChange";
export default {setup() {const { myNumber, a, b, setNumber } = useNumber();return { myNumber, a, b, setNumber };},
};
</script>
  • 哇哦,(),是不是有点开心,代码看起来是不是感觉,神清气爽了???
  • 然后测试一下我们的代码吧~~~
  • 不放图了哦,依然正常运行的哇~~
  • 今天就写到这里啦~小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天()哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

我居然不知道Vue3可以使用hooks函数实现代码复用?相关推荐

  1. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  2. 第 5 章 函数和代码复用

    整理的文章内容主要来源为高教版<计算机等级考试二级 Python>教程视频讲义,并且更正了原讲义中的错误的地方. 专栏文章索引如下: 考试大纲 第 1 章 程序设计基本方法 第 2 章 P ...

  3. 测验5: 函数和代码复用 (第5周)

    测验5: 函数和代码复用 (第5周) 文章目录 测验5: 函数和代码复用 (第5周) 单选题 程序题 这是python123官网上联合MOOC的Python程序设计(第10期)答案 单选题 第三题补充 ...

  4. python中组合数据类型、函数和代码复用的难点_Python电子教案5-2 函数和代码复用...

    <Python电子教案5-2 函数和代码复用>由会员分享,可在线阅读,更多相关<Python电子教案5-2 函数和代码复用(56页珍藏版)>请在人人文库网上搜索. 1.七段数码 ...

  5. Python基础(三)_函数和代码复用

    三:函数和代码复用 (一)函数的基本使用 1.函数的定义 函数是一段具有特定功能的.可重用的语句组,用函数名来表示并通过函数名进行功能调用.函数也可以看作是一段具有名字的子程序,可以在需要的地方调用执 ...

  6. 第五章 函数和代码复用

    第五章 函数和代码复用 5.1 函数的基本使用 5.1.1 函数的定义 定义:函数是一段具有特定功能的.可重用的语句组,用函数名来表示并通过函数名进行功能调用. 使用函数的目的:降低编程难度和代码重用 ...

  7. 函数和代码复用之实例解析:软文的诗词风

    @TOC函数和代码复用之实例解析:软文的诗词风 人生苦短,我学Python 朋友圈已经是现代人生活中的一种社交形态,朋友圈里面的各种软文也体现了语言风格的变化.为了便于手机阅读,很多软文常常会使用一种 ...

  8. python函数代码的复用_Python__函数和代码复用

    主要内容 函数的定义和使用 实例:七段数码管的绘制 代码复用与函数递归 PyInstall库的使用 实例:科赫雪花小包裹 函数的定义与使用 函数的理解与定义 函数的使用及调用过程 函数的参数传递 函数 ...

  9. python使用del保留字定义一个函数-函数和代码复用 --Python

    1.关于递归函数的描述,以下选项中正确的是 A.包含一个循环结构 B.函数比较复杂 C.函数内部包含对本函数的再次调用 D.函数名称作为返回值 答案:D 答案解析:递归函数是指函数内部包含对本函数的再 ...

最新文章

  1. python安装email模块_Python使用SMTP模块、email模块发送邮件
  2. 六十一、Python中的smtplib和email实现邮件发送
  3. 访问 GitHub 的速度很慢?试试这几种方法
  4. Java多线程:线程安全和非线程安全的集合对象
  5. 一条看似不合理SQL和10个合理的解释
  6. c++删除数组中重复元素_LeetCode题目26:删除排序数组中的重复项
  7. 2021年流动式起重机司机模拟考试题库及流动式起重机司机模拟考试系统
  8. Jetson Xavier NX使用Yolov5+DeepStream+TensorRT实现CSI摄像头的目标识别及采坑记录
  9. APQ:联合搜索网络架构、剪枝和量化
  10. LoadRunner牛刀小试
  11. 手把手教学 玩转苹果HomeKit
  12. 《视频理解中的神经网络结构设计》讲座笔记 作者:邱钊凡
  13. 什么是判断力?如何提高判断力?@HR人才测评
  14. 微信小程序之———登录注册!
  15. 唯品会获得vip商品详情 API 返回值说明
  16. AI公开课:19.05.30 瞿炜-新东方AI研究院院长《做懂教育的AI:把未来带进现实》课堂笔记以及个人感悟
  17. 使用plotly画3d立方体
  18. 2023中国传媒大学计算机考研信息汇总
  19. html5网页流行色,Pantone 2018流行色:紫外光色(附紫色的UI设计作品)
  20. Http协议之301,302和307

热门文章

  1. HTML和JSP的区别,以及各自的优缺点
  2. 16bit 基4 fft c 语言,【C6678FFT】关于C64X与C66X DSPLIB中FFT的问题
  3. 中顶景区售票软件如何搭配闸机?
  4. 开启辅助服务后equles可能不生效问题. vivo y51
  5. 第三方登录(QQ-Java版)
  6. 山东大学网络靶场实验平台—团队进度(四)
  7. 一个百度员工的离职感悟
  8. pipenv与虚拟环境
  9. RH6616做一个触摸小夜灯
  10. 土木工程和计算机哪个好就业前景,土木类什么专业最吃香?大学土木大类里哪个专业好?附就业前景...