React 之 主要的内置 Hook(十)

ops/2024/10/18 18:24:47/

React 重要的主要内置 Hook 包括以下几个:

1. useState

用于在函数组件中添加状态。它返回一个状态变量和一个更新该状态的函数。这使得函数组件能够像类组件一样具有状态。

useState使用代码栗子:

javascript">import React, { useState } from 'react';  function Example() {  const [count, setCount] = useState(0);  return (  <div>  <p>You clicked {count} times</p>  <button onClick={() => setCount(count + 1)}>Click me</button>  </div>  );  
}

2. useEffect

用于在函数组件中执行副作用操作,比如数据获取、订阅、手动修改 DOM 等。它的工作方式与类组件中的
componentDidMount、componentDidUpdate 和 componentWillUnmount 生命周期方法类似。

useEffect使用代码栗子:

javascript">import React, { useState, useEffect } from 'react';  function Example() {  const [count, setCount] = useState(0);  useEffect(() => {  // 类似于componentDidMount和componentDidUpdate:  console.log(`You clicked ${count} times`);  // 返回一个清理函数,类似于componentWillUnmount:  return () => {  console.log('Component will unmount');  };  }, [count]); // 依赖项数组,当依赖项发生变化时,useEffect会重新执行  return (  <div>  <p>You clicked {count} times</p>  <button onClick={() => setCount(count + 1)}>Click me</button>  </div>  );  
}

3. useContext

它使得你可以无需明确地逐层通过 props 来传递数据,而是在组件之间的任何位置直接访问 React 的 Context
值。useContext 接收一个 React Context 对象(React.createContext 的返回值)并返回该
Context 的当前值。

useContext使用代码栗子:

javascript">import React, { createContext, useContext, useState } from 'react';  // 创建一个 Context 对象  
const ThemeContext = createContext('light');  // 使用 ThemeContext 的组件  
function ThemedButton() {  // 使用 useContext 来获取 ThemeContext 的值  const theme = useContext(ThemeContext);  return (  <button style={{ backgroundColor: theme }}>  I am styled by theme context!  </button>  );  
}  // 提供 ThemeContext 值的组件  
function App() {  // 声明一个状态变量来作为主题  const [theme, setTheme] = useState('light');  // 一个处理函数,用于切换主题  const toggleTheme = () => {  setTheme(theme === 'light' ? 'dark' : 'light');  };  // 使用 ThemeContext.Provider 来包裹组件,并提供主题值  return (  <div>  <button onClick={toggleTheme}>Toggle Theme</button>  <ThemeContext.Provider value={theme}>  <ThemedButton />  </ThemeContext.Provider>  </div>  );  
}  export default App;

http://www.ppmy.cn/ops/34313.html

相关文章

深度学习之基于Pytorch姿态估计的仰卧起坐计数系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 仰卧起坐作为一种常见的健身动作&#xff0c;被广泛用于腹部肌肉的锻炼。然而&#xff0c;对于仰卧起…

Java常用命令总结 持续更新中!!!

蓝桥杯JAVA组 推荐输入输出示例 // 基础输入 import java.util.*;public class Main{public static void main(String[] args){} }// 非静态方法调用 new Main.Solution();//static函数里面调用非static函数 类.函数// 更快的输入方式 BufferedReader // 更快的输出方式 Print…

SpaceX 遭攻击,泄露近150GB数据以及多份图纸

近期&#xff0c;埃隆马斯克 (Elon Musk) 创立的航空航天制造商和太空运输服务公司 SpaceX 称遭遇了网络安全事件&#xff0c;该事件涉及黑客组织Hunters International的数据泄露&#xff0c;据报道该组织发布了 SpaceX 数据泄露的样本。 此次SpaceX 的数据泄露涉及 SpaceX 相…

华为OD机试【求满足条件的最长子串的长度】(java)(100分)

1、题目描述 给定一个字符串&#xff0c;只包含字母和数字&#xff0c;按要求找出字符串中的最长&#xff08;连续&#xff09;子串的长度&#xff0c;字符串本身是其最长的子串&#xff0c;子串要求&#xff1a; 只包含1个字母(a-z, A-Z)&#xff0c;其余必须是数字&#xf…

Day15-JavaWeb开发-Maven高级-分模块设计与开发继承与聚合私服

1. Maven高级-分模块设计与开发 2. Maven高级-继承与聚合 2.1 继承关系实现 2.2 版本锁定 2.3 聚合实现 3. Maven高级-私服 3.1 私服-介绍 3.2 私服-资源上传与下载 4. Web开发-完结

计算机系列之数据库技术

13、数据库技术&#xff08;重点、考点&#xff09; 1、三级模式-两级映像&#xff08;考点&#xff09; 内模式&#xff1a;管理如何存储物理的数据&#xff0c;对应具体物理存储文件。 **模式&#xff1a;**又称为概念模式&#xff0c;就是我们通常使用的基本表&#xff0c…

【动态规划算法】【Python实现】0-1背包

文章目录 [toc]问题描述形式化描述 最优子结构性质递归关系 m ( i , j ) m(i , j) m(i,j)递归方程 Python实现 问题描述 给定 n n n种物品和一背包&#xff0c;物品 i i i的重量是 w i w_{i} wi​&#xff0c;其价值为 v i v_{i} vi​&#xff0c;背包的容量为 c c c如何选择装…

Mysql 行格式 innodb_default_row_format 可以配置那些值, 有什么区别

在MySQL中&#xff0c;innodb_default_row_format选项指定了InnoDB表创建时的默认行格式。这个设置对于新创建的表非常重要&#xff0c;因为它影响了数据的存储方式、空间利用率和性能。innodb_default_row_format可以配置为以下几个值&#xff0c;每个值代表不同的行格式&…