自定义hooks可以应用于做什么,react中如何实现
Admin 2022-06-18 群英技术资讯 762 次浏览
逻辑复用
简单来说就是使用自定义hook可以将某些组件逻辑提取到可重用的函数中。 自定义hook是一个从use开始的调用其他hook的Javascript函数。
例1:当我们整个页面需要获取用户鼠标移动的坐标时,不使用hook的代码,我们可以这样写
const [position, setPosition] = useState({ x: 0, y: 0 }) useEffect(() => { const move = (e) => { setPosition({ x: e.x, y: e.y }) } document.addEventListener('mousemove', move) return () => { document.removeEventListener('mousemove', move) } }, []) return ( <div> x:{position.x} y:{position.y} </div> )
例2:当我们页面中有一个图片要跟随鼠标移动时,不使用hook的代码,我们也可以这样写:
const [position, setPosition] = useState({ x: 0, y: 0 }) useEffect(() => { const move = (e) => { setPosition({ x: e.x, y: e.y }) } document.addEventListener('mousemove', move) return () => { document.removeEventListener('mousemove', move) } }, []) return ( <div> <img src={img} style={{ position: 'absolute', top: position.y, left: position.x, }} alt="" /> </div> )
很明显,以上两个例子呈现效果不同,但使用的逻辑代码大部分相同时,这些逻辑代码我们就可以使用hook进行逻辑复用
我们提取以上两个例子里可以复用的逻辑代码,新建一个名为useMousePosition的文件
import { useState, useEffect } from 'react' export default function useMousePosition() { const [position, setPosition] = useState({ x: 0, y: 0 }) useEffect(() => { const move = (e) => { setPosition({ x: e.x, y: e.y }) } document.addEventListener('mousemove', move) return () => { document.removeEventListener('mousemove', move) } }, []) return position }
我们在useMousePosition函数中提取了此功能。现在,我们可以将其导入到要使用的任何位置!
最后像使用普通函数那样使用即可
const position = useMousePosition() return ( <div> x:{position.x} y:{position.y} </div> )
很明显使代码量减少了
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
javascript数组中的findIndex方法 ,下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
这篇给大家分享的一个JavaScript中for循环使用的示例,需求是实现从1加到50的计算,文中示例代码介绍的非常详细,对大家学习for循环的使用有一定的参考价值,感兴趣的朋友接下来一起跟随小编看看吧。
改变方法:1、利用value属性,语法“input对象.value = "修改后的值";”;2、利用setAttribute()方法,语法“input对象.setAttribute("value","修改后的值");”。
这篇文章给大家分享的是用JavaScript怎样实现一个日期倒计时的功能。小编觉得挺实用的,因此分享给大家做个参考,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起学习一下吧。
有些代码,需要的时候能写的出来,但是也需要时间,如果有的东西长时间不接触,再次看的时候也会感觉很陌生,这篇文章主要给大家介绍了一些不常见却很实用的JS技巧,既可以作为一个知识的积累,又可以作为闲暇时打发时间写写代码的记录,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008