自定义hooks可以应用于做什么,react中如何实现
Admin 2022-06-18 群英技术资讯 1125 次浏览
今天这篇我们来学习和了解“自定义hooks可以应用于做什么,react中如何实现”,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解“自定义hooks可以应用于做什么,react中如何实现”有一定的帮助。有这方面学习需要的朋友就继续往下看吧!逻辑复用
简单来说就是使用自定义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执行模型的相关资料。帮助大家更好的理解和学习JavaScript,感兴趣的朋友可以了解下
这篇文章主要为大家介绍了Vue搭建Vuex环境,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
接到需求需要一个服务来执行shell脚本,要求可以实时打印shell脚本执行的过程,并看到脚本执行的结果。明确任务目标:这是一个web服务,需要执行shell脚本当一个脚本执行的时候,再次发送请求需要等待当前脚本执行完毕,再自动执行这次请求使用长连接而不是socket添加脚本不需要重启服务器这里采用的是express框架开始首先搭好express基本框架新建
这篇文章主要为大家详细介绍了使用javascript实现双端队列,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要给大家分享react中不可变值,对大家学习什么是不可变值和理解为何要用不可变值有一定的帮助,感兴趣的朋友可以参考一下,希望大家阅读完这篇文章能有所收获,下面我们一起来学习一下吧。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008