【译】值得推荐的十大React Hook 库

)}

</>

);

};

2. useMedia


您是否需要一种跟踪CSS媒体查询的方法?useMedia提供一个简单的方法解决这个问题。这是一个能够准确跟踪的感官钩子。在任何应用程序或网站上,媒体查询以及响应能力都非常重要。

它以TypeScript编写。该软件包具有定义明确的文档,它的用法以及测试方法也解释的非常好。

用法示例:

import useMedia from ‘use-media’;

const Example = () => {

const isWide = useMedia({minWidth: ‘1000px’});

return (

Screen is wide: {isWide ? “WideScreen” : “NarrowScreen”}

);

};

3.Constate


Constate可将本地状态提升到React Context。这意味着可以以最小的努力轻松地将任何组件的任何状态提升到上下文。如果您想在多个位置使用相同的状态,或者为多个组件提供相同的状态,这很有用。该名称来自合并Context和state。它是基于typescript实现的,而且库非常的小。虽然该文档不是很详细,但是看例子,我们就可以轻易地学会使用。

用法示例:

import React, { useState } from “react”;

import constate from “constate”;

// custom hook

function useCounter() {

const [count, setCount] = useState(0);

const increment = () => setCount(prevCount => prevCount + 1);

return { count, increment };

}

// hook passed in constate

const [CounterProvider, useCounterContext] = constate(useCounter);

function Button() {

// use the context

const { increment } = useCounterContext();

return +;

}

function Count() {

// use the context

const { count } = useCounterContext();

return {count};

}

function App() {

// wrap the component with provider

return (

);

4. Redux hooks


Redux是许多(即使不是全部)React开发人员的知名工具。在整个应用程序中,它用作全局状态管理器。在React的最初版本发布几个月后,它就随hooks而出现了。它通过利用现有的connect()方法 提供了 一种 替代HOC(高阶组件)模式的方法。

提供的最著名的挂钩是:

  • useSelector

  • useDispatch

  • useStore

该文档非常好,虽然有点复杂,但是它将为您提供开始使用它们所需的任何信息。

用法示例:

import  {useSelector, useDispatch} from “react-redux”;

import * as actions from “./actions”;

const Example = () => {

const dispatch = useDispatch()

const counter = useSelector(state => state.counter)

return (

{counter.value}

<button onClick={() => dispatch(actions.incrementCounter)}>

Counter +1

);

};

5. React hook form


React hook form是一个表单钩子库,类似于Formik和Redux表单,但是更好!凭借其更简单的语法,速度,更少的重新渲染数和更好的可维护性,它开始爬上GitHub的阶梯。它的体积很小,并且是考虑到性能而构建起来的。该库甚至提供了非常棒的表单生成器!它是React钩子库中GitHub star数量最多的库之一(14.8k)。

用法示例:

import React from “react”;

import { useForm } from “react-hook-form”;

function App() {

const { register, handleSubmit, errors } = useForm();

const onSubmit = (data) => {

// logs {firstName:“exampleFirstName”, lastName:“exampleLastName”}

console.log(data);

};

return (

{errors.lastName && “Last name is a required field.”}

{errors.age && “Please enter number for age.”}

);

}

6. useDebounce


useDebounce表示一个用于防抖的小钩子。它用于将功能的执行推迟到以后。常用于获取数据的输入框和表格中。

用法示例:

import React, { useState } from “react”;

import { useDebounce } from “use-debounce”;

export default function Input() {

const [text, setText] = useState(“Hello”);

const [value] = useDebounce(text, 1000);

return (

<input

defaultValue={“Hello”}

onChange={(e) => {

setText(e.target.value);

}}

/>

Value: {text}

Debounced value: {value}

);

}

7. useLocalStorage


useLocalStorage是一个小钩子,与上面的钩子一样。它对于在localStorage中提取和设置数据非常有用。使用它之后操作变得很容易。

提供自动JSON序列化和同步的功能

文档以高质量的方式编写,并且通过扩展示例可以完全理解。

用法示例:

import React, { useState } from “react”;

import { writeStorage } from ‘@rehooks/local-storage’;

export default function Example() {

let counter = 0;

const [counterValue] = useLocalStorage(‘counterValue’);

return (

{counterValue}

<button onClick={() => writeStorage(‘i’, ++counter)}>

Click Me

);

}

8. usePortal


usePortal使得创建下拉菜单,弹出层,通知弹出窗口,提示等变得非常容易!它提供了在应用程序的DOM层次结构之外创建元素的功能。

它还提供了门户样式和大量其他选项的完全定制。

编写的文档非常好,其中展示了许多示例,这些示例足够用于开始使用库/自己做钩子。

用法示例:

import React, { useState } from “react”;

import usePortal from “react-useportal”;

const Example = () => {

const { ref, openPortal, closePortal, isOpen, Portal } = usePortal()

return (

<>

<button ref={ref} onClick={() => openPortal()}>

Open Portal

{isOpen && (

This Portal handles its own state.{’ '}

Close me!, hit ESC or

click outside of me.

)}

</>

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
**

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-rF9xq4dD-1715059790363)]

[外链图片转存中…(img-PgjJEtaY-1715059790363)]

[外链图片转存中…(img-TFEksdX3-1715059790363)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: React HookReact的新增特性,它可以让你在不编写class的情况下使用state以及其他的React特性。它为已知的React概念提供了更直接的API,如props、state、context、refs以及生命周期。Hook不能在class中使用。\[1\] Hook的使用规则包括只能在函数外层调用Hook,不要在循环、条件判断或者子函数中调用,以及只能在React的函数组件和自定义Hook中调用Hook,不要在其他JavaScript函数中调用。\[3\]其中,useState是一种Hook,它允许你在React函数组件中添加state。使用useState方法时,可以通过const \[state, setState\] = useState(initialState)来声明一个state变量,并使用setState来更新该变量的值。\[3\] #### 引用[.reference_title] - *1* [【React-Hook】详解](https://blog.csdn.net/GengFuGuo/article/details/124840750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [react 中的Hook 用法及介绍](https://blog.csdn.net/SongdanDab/article/details/128650378)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值