当前位置: 首页 > 科技观察

效率书:7个很棒的ReactHooks

时间:2023-03-16 20:39:35 科技观察

Reacthooks发布之前,React软件的功能组件比较有限,往往没有办法处理状态、上下文API和一些生命周期方法。但从React16.8开始,用户可以更灵活地使用一些已有的代码。本文将带你学习如何使用不同的Reacthooks来解决你每天遇到的问题。useFilerHookChristopherPatty组合了一组很酷的钩子函数,称为“骗子”。我个人喜欢useFilerHook,因为它在Web浏览器中创建了一个虚拟文件系统,基本上该功能利用浏览器的本地存储来管理文档和文档内容。首先,在应用程序中安装“crooks”安装包:npminstallcrooks--save现在,在crooks中导入useFilerHook:import{useFiler}from'crooks'至此,你就可以初始化hook和管理虚拟文件了系统。下面是一个简单代码片段的示例:constApp=()=>{const[files,{add,remove,update,clear}]=useFiler("localStorageItem")return(

MyProject
)}如以上代码所示,您可以使用add()、remove()、update()和clear()方法。接下来让我们学习如何使用它们。(1)添加文件add()函数接受一个必需的参数。我们需要传递JavaScriptObjectNotation(简称JSON)可序列化数据:update("abc1234","Newcontentofffile.")注意这个函数会自动为每个新文件生成一个ID,但是用户仍然可以传递一个整数或者一个字符串作为设置自定义ID的第二个参数。(2)更新文件update()方法接受两个参数。第一个是文件的ID,而另一个参数用于传递新数据:update("abc1234","Newcontenttofile.")(3)删除文件使用remove()方法传递文件ID删除它:remove("abc1234")(4)清除所有文件调用clear()方法删除所有文件:clear()2。useFetchHooks来源:unsplashStevenPersia(MERNStack的开发者)写了很多Reacthooks并把它们命名为“Captainhook”。它们在处理日常任务时非常有用。接下来的几个钩子示例取自他的收藏。useFetch可以从应用程序编程接口(API)获取数据。请求完成后,它将返回带有错误的响应。在项目中引入useFetch:importuseFetchfrom"hooks/useFetch";发出请求:const{response,errors}=useFetch("https://api.github.com/users/torvalds/repos");3.useHoverHook也属于useHoverHook“船长钩”合集。通常,此函数跟踪屏幕上的鼠标光标以检测它是否在特定元素上。如果是,它将触发悬停事件。引入useHoverHook:importuseHoverfrom"hooks/useHover";初始化它:const[hoverMe,isHovered]=useHover();在这里,hoverMe代表一个特定的HTML元素,isHovered包含可以在条件语句中检查的值布尔值。例如,可以这样使用:{isHovered?"Hovered!":"Hoverme!"
4.useSlugHookSlug是每个Web项目的重要组成部分。事实上,它还可以提高网站的搜索引擎优化(SEO)。这就是Steven将useSlug添加到他的“Captainhook”系列中的原因。使用useSlug快速将任何字符串转换为SEO友好的slug。它足够聪明,可以用标准对应物表示任何变音标记(重音)。例如,它可以将é或è转换为e表示。像往常一样,首先需要引入这个钩子:importuseSlugfrom"hooks/useSlug";使用方法:初始化钩子时,需要传入任意字符串(如文章名称)作为第一个参数。结果是它将返回一个格式正确的slug,可以立即应用于项目。useSlug("ReactHooks!résoudrelesproblèmesquotidiens");//react-hooks-resoudre-les-problemes-quotidiens5.useDrag和useDropHooks有一个开源的ReactHooks库叫“ahooks”,由电商开发巨头阿里巴巴和一些志愿者共同积极开发。在撰写本文时,该库有大约46个钩子,每个钩子都专注于解决特定问题。这里将介绍一对钩子:useDrag和useDrop。您可能已经知道它们的作用,但我必须谈谈它们如何帮助我们实现HTML5的拖放功能。首先安装:npmintallahooks--保存引入这个钩子:import{useDrag,useDrop}from'ahooks';使用方法:首先初始化useDrag和useDropHook。useDrag返回传递给文档对象模型(DOM)元素的Prop。useDrop返回传递给放置区域的Prop。它还可以通过布尔属性(isHovering)通知拖动元素是否放置在放置区域的顶部。最后,useDrop有四个回调函数,它们根据放置项目的类型执行:onTextonFilesonUrionDomconstgetDragProps=useDrag();const[props,{isHovering}]=useDrop({onText:(text,e)=>{alert(`'text:${text}'dropped`);},onFiles:(files,e)=>{alert(`${files.length}filedropped`);},onUri:(uri,e)=>{alert(`${files.length}filedropped`){alert(`uri:${uri}dropped`);},onDom:(content:string,e)=>{alert(`custom:${content}dropped`);}});可以用鼠标拖动HTML5元素:DraggableElement
这是一个HTML5元素,您可以在其中放置一些东西:{isHovering?'ReleaseItemHere':'DropAnythingHere'}
6.useDarkModeHookCraigWalker的原创“ReactRecipes”是一个流行的自定义Reacthook集合。该集合中的useDarkModeHook可以在网站主题的浅色和深色模式之间切换。切换模式后,它将当前值存储在localStorage中。这意味着无论在何处打开浏览器,用户的首选模式都将应用于所有浏览器。安装库:npminstallreact-recipes--save参考:import{useDarkMode}from"react-recipes";例如,一般情况下,useDarkMode()返回的结果有两种:darkMode:当开启深色模式时,布尔值为true。setDarkMode:切换明暗模式。functionApp(){const[darkMode,setDarkMode]=useDarkMode();return(
);}在本文中,我们有在日常生活中学习了在工作中使用ReactHooks。上面的例子只是沧海一粟,还有无数的开源钩子供你应用到自己的项目中。这就是开源的意义。ReactHooks的主要好处是编写更多、更好、更实用的代码。