首页 > 其他分享 >vue或者react中的hooks的理解

vue或者react中的hooks的理解

时间:2023-03-31 13:55:38浏览次数:28  
标签:vue const hooks timer react value stopTask countRef

我们听过react 里面有hooks的概念,那么怎么理解hooks呢?

 

其实vue2中,我们没有hooks的概念,vue3中我们引入了组合式函数(也就是用组合式api写的),它其实就是vue的hooks。

 

总结下来,hooks有以下特点:

1、hooks其实就是个函数,只是实现它的方法比较特殊,利用组合式api实现的。

2、组合式函数是有状态逻辑的函数,返回的内容,可能随着时间的变化而变化。(和lodash不一样,传入什么,立马返回一个固定的)

3、hooks其实就是把vue2中的mixins 用一个函数返回,这样使用起来很优雅。

4、hooks函数,约定成俗用useXxxx开头命名。

 

例子:比如我们要实现一个倒计时的功能,因为变量状态会一直变,用hook是的方式实现,最好不过了。你可以类别vue2中实现该功能如何实现。

export const useCountdown = (count = 60) => {
  const countRef = ref(0);

  let timer;

  const stopTask = () => {
    countRef.value = 0;
    timer && clearInterval(timer);
  };

  const startTask = () => {
    stopTask();
    countRef.value = count;
    timer = setInterval(() => {
      const nextValue = countRef.value - 1;
      countRef.value = nextValue;
      if (nextValue === 0) {
        stopTask();
      }
    }, 1000);
  };

  return [countRef, startTask, stopTask];
};

 

标签:vue,const,hooks,timer,react,value,stopTask,countRef
From: https://www.cnblogs.com/teamemory/p/17276051.html

相关文章

  • Vue整合EsMap
    一、EsMap地图1.1.生成EsMap本地文件1.1.1.进入EsMap数字孪生三维可视化云平台打开链接https://www.esmap.cn/esmapv/content/cn/member/index.html1.1.1.新建三维场景点击新增三维场景,输入信息,点击下一步即可。其中三维场景ID和建筑token在web端需要使用ID为项目工程......
  • Vue2电商实战项目
    单页面应用分为3层结构层(template)样式层(style)行为层(script)入口文件main.js:程序最开始执行的文件babel:就是翻译官,比如ES6语法转换成ES5语法脚手架使用-命令行创建项目:vuecreate项目名称-node_modules:放置项目依赖的地方-public:一般......
  • vue2 原理之 如何做到数据可以被监听?
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-......
  • vue elementui中使表的滚动条 滚到顶部或底部
    1.设置table的ref为tableList2.设置滚动至顶部this.$refs.tableList.bodyWrapper.scrollTop=0;3.设置滚动至底部this.$refs.tableList.bodyWrapper.scrollTop=this.$refs.tableList.bodyWrapper.scrollHeight;//如果请求完更新数据,需要使用$nextTickthis.$next......
  • 第十九篇 vue - 深入组件 - 透传 Attributes - $attrs
    Attributes继承“透传attribute”指的是传递给一个组件,却没有被该组件声明为props或emits的attribute或者v-on事件监听器。最常见的例子就是class、style和id当一个组件以单个元素为根作渲染时,透传的attribute会自动被添加到根元素上。举例来说,假如我们有一个<......
  • 第二十篇 vue - 深入组件 - 插槽 - Slots
    插槽内容与出口我们已经了解到组件能够接收任意类型的JavaScript值作为props,但组件要如何接收模板内容呢?在某些场景中,我们可能想要为子组件传递一些模板片段,让子组件在它们的组件中渲染这些片段可以像这样使用<FancyButton>Clickme!<!--插槽内容--></FancyButton>......
  • React 笔记
    Date:2023-03-3020:36:05视频链接:尚硅谷React教程开始学react了,......
  • react useComparedState
    import{useCallback,useRef,useState}from'react';import{shallowEqual}from"../utils/shallowEqual";functionuseComparedState(initialState:any){const[state,setState]=useState(initialState);conststateRef=useRef......
  • vue3+vite+ts 配置@时vscode报找不到__dirname的问题
    vue3+vite+ts配置@时vscode报找不到__dirname的问题-CSDN博客  原因:path模块是node.js的内置模块,而node.js默认不支持ts文件的解决:安装@type/node依赖包 npminstall@types/node--save-dev......
  • React Router 备忘清单_开发速查表分享
    ReactRouter备忘清单IT宝库整理的ReactRouter开发速查清单适合初学者的综合ReactRouter6.x备忘清单入门,为开发人员分享快速参考备忘单。开发速查表大纲入门安装使用添加路由器根路由处理未找到错误contacts用户界面嵌套路由客户端路由创建联......