React Hooks 速学

【2024官方文档版】React快速入门 偶然翻开React的官方文档。觉得蛮有意思,总觉是入了坑洋洋洒洒几千字,记录学习React的一段旅程温故而知新^皿^ 阅读详情

Hook 是一些可以让你在函数组件里“钩入” React state 及生命周期等特性的 JavaScript 函数。不编写 class 的情况下使用 state 以及其他的 React 特性。

出现的原因
  • 代码管理困难,每个组件的状态,修改状态改动的文件较多。Hooks 可以把组件相互关联的部分拆分成函数。使其无需按照生命周期划分。
  • class 带来的问题,this 绑定、不能很好的压缩、热重载不稳定等问题。
注意事项
  • 只能在函数最外层调用 Hook。不要在循环、条件判断或者子函数中调用
  • 只能在 React 的函数组件中调用 Hook,不要在普通的 JavaScript 函数中调用 Hook
  • 借助插件来强制执行以上规则
class 与 hooks 的区别
  • Hook 允许我们按照代码的用途分离他们, 而不是像生命周期函数那样。React 将按照 effect 声明的顺序依次调用组件中的每一个 effect。
新增的 Hook
1. useState
import React ,{useState} from 'react'

function Example() {
  // useState 的唯一参数就是 state 0
  // 声明一个新的叫做 “count” 的 state 变量 ,和一个 操作 count 的函数 setCount
  // 当函数退出的时候,state 会保存在 React 中,其它变量会被回收。
  const [count, setCount] = useState(0);
  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

export default Example

我们可以在单个组件中使用多个 State Hook 或 Effect Hook,怎么确定哪个 state 对应 useState ?

答案是:React 靠的是 Hook 调用的顺序,Hook 的调用顺序在每次渲染中都是相同的,所以它能够正常工作。

2. Effect

用来执行副作用的操作,它跟 class 组件中的 componentDidMount、componentDidUpdate 和 componentWillUnmount 具有相同的用途,在第一次渲染和每次更新后都会执行。

// 相当于 componentDidMount 和 componentDidUpdate: title 会及时更新。
  useEffect(() => {
    // 使用浏览器的 API 更新页面标题
    document.title = `You clicked ${count} times`;
  },[count]); // 第二个可选参数 仅在 count 更改时更新

执行结束需要清除副作用 的话,需要返回一个函数,在函数内部清除。

自定义 Hook

通过自定义 Hook,可以将组件逻辑提取到可重用的函数中

  • 自定义的 Hook 是一个函数,以 use 开头,useXXX。函数内部可以调用其他的 Hook

  • 用法和其它 Hook 一样,就像函数一样去传参、使用就可以。

React-Hooks 和 React-Redux React-Hooks 的 使用 React-redux 的 使用 阅读详情

相关推荐

【Flink】状态编程: 订单超时告警

文章目录一、基础概念二、Flink状态编程1、支持的状态类型2、Managed Keyed State六种类型基本API状态的生命周期3、Managed Operator State三、案例:订单延迟告警统计1、需求描述2、需求分析3、数据与模型4、详细实现 一、基础概念 在Flink架构体系中,有状态计算可以说是Flink非常重要的特性之一。 有状态计算是指: 在程序计算过程中,在Flink...

一只皮皮熊 2862

Cordova从开发 到跑路~

Cordova是什么? Cordova 是使用HTML,CSS和JavaScript构建混合移动应用程序的平台. Apache Cordova是一个开源移动开发框架,它允许您使用标准的Web技术,如HTML5,CSS3和JavaScript进行跨平台开发,避免每个移动平台本机开发语言。应用程序在针对每个平台的包装内执行,并依靠符合标准的API绑定来访问每个设备的传感器,数据和网络状态。" 所以说Cordova其实就是为混合的移动应用提供了一个平台,可以让一个应用在不同平台上使用,比如说这个Android、I

weixin_52942787的博客 2154

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py和Pandas库,详细演示了如何高效读取HDF5格式文件、理解数据结构、提取关键特征(如传感器数据与剩余使用寿命RUL),并整合为可用于预测性维护分析的DataFrame,帮助研究者和工程师快速上手这一重要的工业时序数据集。

weixin_29083373的博客 280

cordova介绍

Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头、麦克风等。 Cordova还提供了一组统一的JavaScript类库,以及为这些类库所用的设备相关的原生后台代码。 Cordova支持如下移动操作系统:iOS, Android, Blackberry, Windows Phone, Palm WebOS,

记事本 1657

基于imx6ull平台opencv的图像采集、ffmpeg推流和Windows端拉流(多线程)

本文档是针对imx6ull平台`opencv`的图像采集、ffmpeg推流和Windows端拉流。首先创建一个线程`opencv`通过摄像头采集视频图像,接着再创建两个线程,其中一个线程获取采集的视频图像送给ffmpeg服务,另一个线程用于获取采集的视频图像并处理,处理完并在显示屏上显示,详细的流程请参看如下。

程小二的博客 1607

CLAHE 算法学习 matlab

概念可参考: CLAHE (Contrast Limited Adaptive Histogram Equalization)算法学习CLAHE具体实现主要包括6个步骤。1):分块。将输入图像划分为大小相等的不重叠子块,每个子块含有的像素数为M。参考示例为8×8块。 2):计算子块直方图。 3):计算剪切阈值clipLimit 4):像素点重分配。对每个子块,使用步骤三中多余的像素重新分配。 5):直方图均衡。 6):像素点灰度值重构。(源码中采用了双线性插值) http://www.realtimer

baidu_34971492的博客 4253

React快速入门

官网:https://react.docschina.org/简介:用于动态构建用户界面的 JavaScript 库优点:声明式编码、组件化编码、高效(diff算法,使用虚拟dom,减少页面重绘)

每天一个前端小知识~ 596

操作系统 | 知识梳理 | 复习(上)

操作系统复习

知识库搭建ing 3476

React 快速入门 这篇就够了

React 是一个流行的 JavaScript 库,它专注于用户界面的构建。它的主要特点包括:1.组件化架构:React 使用组件来构建 UI,每个组件都是独立的,可以重复使用,这有助于代码的模块化和项目的可维护性。2.虚拟 DOM:React 维护一个内存中的虚拟 DOM 树,只有在真正需要时才更新实际的 DOM,这提高了更新效率和性能。3.声明式 API:开发者通过描述 UI 应该是什么样子来创建组件,React 负责实际的渲染工作,这使得代码更易理解和编写。

制定持续可量化的目标,不断坚持。 6361

uniapp(全端兼容) - 最新详细实现pdf在线预览功能,uniapp内置预览PDF文件功能,uniapp在安卓app|苹果app|h5网页网站|微信小程序中打开pdf进行在线预览(详细示例源码)

uni-app,安卓Android,苹果ios,App端,H5网页,移动端网站,微信小程序,支付宝小程序,nvue,vue,pdf文档,pdf文件,office,uniapp 预览pdf,uniapp怎么做pdf预览,uniapp如何实现全平台兼容的pdf在线预览,uniapp怎么在h5打开pdf文档,实现PDF在线预览,H5移动端文件预览pdf,文件下载和预览,uniapp App端pdf文件预览,app移动端在线预览pdf文件,无法预览pdf怎么办,有没有预览pdf的插件,根本打不开咋办,uniapp使

✅ 精选推荐文章 1万+

QMK固件OLED显示屏配置教程:从零开始实现个性化键盘显示(实操部分)

本教程详细介绍了如何从零开始配置QMK固件的OLED显示屏,实现个性化键盘显示。首先,文章解释了OLED显示屏的基本概念及其在键盘中的应用,并介绍了I2C和SPI两种通信方式。接着,教程逐步指导用户如何在QMK固件中启用OLED功能,包括在rules.mk中启用OLED、在halconf.h和mcuconf.h中配置I2C功能,以及在config.h中设置I2C和OLED参数。最后,教程展示了如何在keymap.c中编写代码,实现OLED显示内容,并提供了进阶定制功能,如显示当前层信息、按键状态和QMK L

Despacito0o的博客 581

React Hooks 实战案例

在 React 之前的版本中,组件要么是函数组件,要么是类组件。函数组件可以使用纯函数的方式编写,但是没有状态(state)和其他 React 特性;类组件则可以拥有状态和其他 React 特性,但是需要使用 class 语法来定义。React Hooks 就是在函数组件中引入了状态和其他 React 特性的工具。useState:在函数组件中添加状态,相当于在类组件中使用 this.state。

程序边界 6818

使用pytorch-superpoint与pytorch-superglue项目实现训练自己的数据集

superpoint与superglue的组合可以实现基于深度学习的图像配准,官方发布的superpoint与superglue模型均基于coco数据训练,与业务中的实际数据或许存在差距,为此实现基于开源的pytorch-superpoint与pytorch-superglue项目实现训练自己的数据集。然而,在训练pytorch-superpoint有诸多细节需要优化,特此整理成技术文档。本文档描述了实验pytorch-superpoint与pytorch-superglue项目训练自己的图像配准模型。

a486259的博客 9506

React Hooks详解

React的函数式组件式本身是没有状态的和其他类似于class组件的功能,所以一开始,函数组件一般只作为容器组件存在,用来展示父级组件传入的值。而16.8之后出现的 hooks(钩子),打开了函数式组件的新大门。 useState 作用:用来记录函数式组件的状态。 使用方式: import React, { useState } from 'react' const [n, setN] = React.useState(0) 例子: import React, {useState} from

duansamve的博客 6332

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

深入浅出 React Hooks

React Hooks 是什么? Hooks 顾名思义,字面意义上来说就是 React 钩子的概念。通过一个 case 我们对 React Hooks 先有一个第一印象。 假设现在要实现一个计数器的组件。如果使用组件化的方式,我们需要做的事情相对更多一些,比如说声明 state,编写计数器的方法等,而且需要理解的概念可能更多一些,比如 Javascript 的类的概念,this 上下文的指向等...

大灰狼的小绵羊哥哥的博客 5232

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

React中的Hooks

和。类组件可以使用state来管理内部状态,也能使用生命周期方法(如)来处理副作用。而函数组件是“无状态的”,它们只能接收props并返回JSX,无法拥有自己的状态和生命周期。简单来说,Hooks 让函数组件也能拥有和类组件几乎同等的能力,从此你可以在不编写 class 的情况下使用 state 和其他 React 功能。这使得函数组件成为现代React开发的首选。

2301_81253185的博客 1711

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

深入解析 React Hooks 的原理

本文深入解析了React Hooks的实现原理,帮助开发者更好地理解其工作机制。Hooks解决了类组件生命周期复杂、代码冗余和逻辑复用困难等问题,通过函数组件实现状态管理和副作用处理。 核心原理包括: useState利用闭包和内部状态数组管理状态 useEffect通过依赖数组和清理机制处理副作用 自定义Hooks组合内置Hooks实现复杂逻辑复用 React严格维护Hooks调用顺序以保证正确性 文章通过简化实现代码演示了Hooks的内部机制,并强调遵守Hooks规则的重要性。理解这些原理有助于开发者更

你若盛开,清风自来 1990

React Hooks

React Hooks 是 React 16.8 引入的功能,使函数组件能使用状态和生命周期等特性。它简化代码结构,提高复用性,替代类组件的复杂逻辑。核心 Hooks 包括:useState(状态管理)、useEffect(副作用处理)、useContext(跨组件数据传递)、useReducer(复杂状态逻辑)、useCallback/useMemo(性能优化)、useRef(DOM 操作)等。此外,开发者可创建自定义 Hooks 封装复用逻辑。Hooks 仅用于函数组件,使代码更简洁高效,同时保持 Re

likuoelie的博客 993

React Hooks中常用Hooks的用法详解

React Hooks中常用Hooks的用法详解

杨杨吖的博客 3939

react-hooks原理

一 前言 本篇文章主要从react-hooks起源,原理,源码角度,开始剖析react-hooks运行机制和内部原理,相信这篇文章过后,对于面试的时候那些hooks问题,也就迎刃而解了。实际react-hooks也并没有那么难以理解,听起来很cool,实际就是函数组件解决没有state,生命周期,逻辑不能复用的一种技术方案。 Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 老规矩,????️????️????️我们

https://www.xiaohongshu.com/user/profile/5f3543150000000001002b2e 8449

深入了解 React Hooks API:自定义 Hooks 的魅力

Hooks 是 React 16.8 引入的一组 API,使得函数组件可以使用 state 和其他 React 特性。Hooks 的出现使得我们可以在函数组件中处理副作用、添加 state、处理组件生命周期等。他们不影响组件的结构,但提供了一种更加优雅和可组合的方式来管理组件逻辑。useStateuseEffectuseContext等等自定义 Hooks 是 React Hooks API 的一个强大特性。

有我更精彩的博客 1324

React 之 Hooks

React Hooks 如 useState 和 useEffect 赋予函数组件状态与副作用处理能力,提升逻辑复用性与代码可维护性。理解纯函数、副作用及依赖数组机制,是掌握 Hooks 的关键。

2302_80706750的博客 1241

React Hooks 的原理

React 是实现了组件的前端框架,它支持 class 和 function 两种形式的组件。class 组件是通过继承模版类(Component、PureComponent)的方式开发新组件的,继承是 class 本身的特性,它支持设置 state,会在 state 改变后重新渲染,可以重写一些父类的方法,这些方法会在 React 组件渲染的不同阶段调用,叫做生命周期函...

frontend_frank的博客 6993

一文讲清楚React Hooks

React Hooks是React 16.8引入的新特性,允许在函数组件中使用状态和生命周期等特性。主要包括:1) useState管理组件状态;2) useEffect处理副作用操作;3) useContext共享上下文数据。其他常用Hooks还有useReducer处理复杂状态、useCallback和useMemo优化性能、useRef获取DOM引用。Hooks解决了类组件代码复用困难、逻辑分散等问题,使函数组件具备类组件的全部能力,同时提供更简洁的代码组织和更好的性能优化手段。

xiaobangkeji的博客 1324

ReactJS Hooks 总结

ReactJS Hooks 总结 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的

Mr_Four 557

React Hooks 核心规则&自定义 Hooks

自定义 Hooks 的核心价值是 “逻辑复用” 和 “代码拆分”,无论是公共操作的复用,还是业务组件内复杂逻辑的提取,都是其典型使用场景。具体来说,是否需要将逻辑放入自定义 Hooks,可从 “复用性” 和 “代码整洁度” 两个维度判断。

知识点沉淀包括不限于前端 1466
上一篇: Node 中 CommonJS 规范
下一篇: ANIC: Missing emulator engine program for 'x86' CPU. 更新Android模拟器位置
composurext
博客等级 码龄11年 15粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值