news 2026/6/19 22:43:59

HoRain云--React Hooks

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--React Hooks

🎬 HoRain云小助手:个人主页

🔥 个人专栏: 《Linux 系列教程》《c语言教程》

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

1. 什么是 React Hooks?

2. 主要的 React Hooks

实例

实例

3. 使用 React Hooks 的好处

4. 注意事项

5. 实例

实例


React Hooks 是 React 16.8 引入的一项重要特性,它使函数组件能够拥有类组件的一些特性,例如状态管理和生命周期方法的使用。

通过 Hooks,可以更加简洁和灵活地编写 React 组件。

1. 什么是 React Hooks?

React Hooks 是一种函数式组件的增强机制,它允许你在不编写类组件的情况下使用 React 的特性。主要的 Hooks 包括useState,useEffect,useContext,useReducer,useCallback,useMemo,useRef, 和useImperativeHandle等。这些 Hooks 提供了访问 React 特性的方式,使得你可以更好地组织和重用你的代码。

2. 主要的 React Hooks

useState

useStateHook 允许你在函数组件中使用局部状态。它返回一个状态值和更新该状态值的函数。

实例

import React, { useState } from 'react';

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

return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>Click me</button>
</div>
);
}

useEffect

useEffectHook 允许你在函数组件中执行副作用操作(如数据获取、订阅管理、DOM 操作等)。它在每次渲染后都会执行。

实例

import React, { useState, useEffect } from 'react';

function Timer() {
const [seconds, setSeconds] = useState(0);

useEffect(() => {
const interval = setInterval(() => {
setSeconds(seconds => seconds + 1);
}, 1000);

return () => clearInterval(interval);
}, []); // 空数组作为第二个参数表示仅在组件挂载和卸载时执行

return <p>Timer: {seconds} seconds</p>;
}

以下是一些主要的 React Hooks 及其用途:

useState- 用于在函数组件中添加 state,你可以使用它来跟踪随时间变化的数据。

const [state, setState] = useState(initialState);

useEffect- 用于执行副作用操作,比如数据获取、订阅或手动更改 DOM,它与类组件中的 componentDidMount、componentDidUpdate 和 componentWillUnmount 生命周期类似。

useEffect(() => { // 执行副作用操作 return () => { // 清理操作 }; }, [dependencies]); // 依赖数组

useContext- 用于访问 React context 在组件树中传递的数据,而不必通过每个组件传递 props。

const value = useContext(MyContext);

useReducer- 用于更复杂的 state 逻辑,它接收一个 reducer 函数和初始状态,然后返回当前的状态和派发 action 的 dispatch 函数。

const [state, dispatch] = useReducer(reducer, initialState);

useCallback- 用于返回一个 memoized 版本的回调函数,防止不必要的渲染。

const memoizedCallback = useCallback( () => { // 回调函数体 }, [dependencies] // 依赖数组 );

useMemo- 用于对计算结果进行记忆,避免在每次渲染时重复计算。

const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);

useRef- 用于创建对 DOM 元素或值的引用,可以在渲染之间保持状态。

const refContainer = useRef(initialValue);

useImperativeHandle- 用于使用 ref 时暴露 DOM 元素的方法。

useImperativeHandle(ref, () => ({ // 暴露的方法 })); useLayoutEffect - 与 useEffect 类似,但它在所有的 DOM 变更之后同步执行。这在需要读取 DOM 布局并同步触发重渲染时非常有用。 useLayoutEffect(() => { // 副作用操作 }, [dependencies]);

useDebugValue- 用于在 React 开发者工具中显示自定义 hook 的标签。

useDebugValue(value);

3. 使用 React Hooks 的好处

4. 注意事项

5. 实例

以下是一个使用多个 React Hooks 的示例:

实例

import React, { useState, useEffect } from 'react';

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

useEffect(() => {
document.title = `You clicked ${count} times`;
}, [count]); // 仅在 count 发生变化时更新标题

return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>Click me</button>
</div>
);
}

export default Example;

以上代码,我们使用了 useState 来管理 count 的状态,useEffect 来更新页面标题,以及一个简单的按钮来增加 count。

使用 Hooks,你可以编写更简洁、更可重用的组件代码。

Hooks 也使得组件逻辑的测试变得更简单,因为你可以单独测试每个 hook 的逻辑,而不需要包装在一个组件中。

此外,Hooks 还支持自定义,你可以编写自己的 Hooks 来封装复杂的逻辑,然后在多个组件中重用。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/19 22:33:09

大模型求职难,这套课的项目实战能过面试吗

面试场上的“硬通货”&#xff1a;大模型项目实战的深度拆解 现在的求职市场&#xff0c;尤其是 AI 大模型方向&#xff0c;出现了一个非常尴尬的“剪刀差”&#xff1a;一方面企业高喊招不到能落地的人&#xff0c;另一方面大量开发者拿着“调过 API"、“跑过 Demo"…

作者头像 李华
网站建设 2026/6/19 22:19:48

深入解析MCF5206片选模块:嵌入式系统总线访问与多主架构设计

1. 项目概述与核心价值在嵌入式系统开发中&#xff0c;如何高效、可靠地连接微控制器与外部存储器、外设&#xff0c;是决定系统性能、稳定性和成本的关键。很多工程师在初次接触像MCF5206这类集成了丰富片选&#xff08;Chip Select&#xff09;模块的微控制器时&#xff0c;往…

作者头像 李华
网站建设 2026/6/19 22:15:48

Java集成海康SDK:从环境搭建到实时报警监听实战

1. 环境准备与SDK获取 第一次接触海康SDK集成时&#xff0c;最让人头疼的就是环境搭建。记得我刚开始做这个项目时&#xff0c;光是找对SDK版本就花了半天时间。海康官网的下载入口藏得比较深&#xff0c;这里分享我的快速定位方法&#xff1a;直接进入海康威视行业支持→下载…

作者头像 李华
网站建设 2026/6/19 22:11:28

终极游戏存档守护者:Ludusavi让你的游戏回忆永不丢失!

终极游戏存档守护者&#xff1a;Ludusavi让你的游戏回忆永不丢失&#xff01; 【免费下载链接】ludusavi Backup tool for PC game saves 项目地址: https://gitcode.com/gh_mirrors/lu/ludusavi 想象一下这个场景&#xff1a;你花了200小时通关了《艾尔登法环》&#x…

作者头像 李华