React学习-hooks

2024-09-04 03:36

本文主要是介绍React学习-hooks,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

官方文档:https://zh-hans.react.dev/reference/react/useActionState

1.useEffect(setup, dependencies?)

1.1 基础使用

//hooks
import { useEffect } from "react";
import "./App.css";function App(){useEffect(()=>{console.log('useEffect loading');})return ( <h1>app</h1>)
}export default App;

执行时机:
1,组件初始化
2,组件更新后执行(在dom更新之后执行)

1.2 传入依赖项时 []

  //第一个参数回调函数,组件初始化执行,组件更新后也会执行useEffect(()=>{console.log('useEffect loading');},[])

执行时机:
组件初始化、挂载

1.3 传入依赖项时 [a]

useEffect可以监听到useState的状态变化
(如果依赖项中传入多个值[a,b,c],只有有其中之一变化都会执行useEffect。或的关系)

import { useEffect, useState } from "react";
import "./App.css";function App() {const [count, setCount] = useState(0);//第一个参数回调函数,组件初始化执行,组件更新后也会执行useEffect(() => {console.log("useEffect loading");console.log(count);// return () => {//   console.log('return 的函数在卸载的时候执行');// }}, [count]);const btn = () => {setCount(count + 1);};return (<div><h1>hooks</h1><h1>{count}</h1><button onClick={btn}>add</button></div>);
}export default App;

在这里插入图片描述

执行时机:
1,组件初始化、挂载
2,依赖项的状态变化时

1.4 第二个参数不传

第二个参数不传,会将所有定义的state值收集起来,只有有一个值变化了就会执行useEffect
在这里插入图片描述

1.5 返回的函数 ☆

执行时机:
1,组件卸载的时候
2,状态发生变化时

  useEffect(() => {console.log("useEffect loading",count);//变化后的数据return(()=>{//return 中的值是变化之前的数据console.log('return!!',count);})});

在这里插入图片描述

应用场景:用于聊天的卸载

用户我跟多个人聊天的场景:

伪代码:
跟用户A

function Bpp(){useEffect(() => {//userAconnect(userA)return(()=>{console.log('return!!');})},[userA]);
}

离开A页面,到用户B

function Bpp(){useEffect(() => {//userBconnect(userB)return(()=>{//userAconsole.log('return!!');//断开A的连接disconnect(userA)})},[userB]);//A-->B
}

2.useState

const [state, setState] = useState(initialState)

import {  useState } from "react";
import "./App.css";function App() {const [count, setCount] = useState(0)const btn=()=>{setCount(count+1)}return ( <div><h1>hooks</h1><h1>{count}</h1><button onClick={btn} >add</button></div>)
}
export default App;

在这里插入图片描述

面试题

react的更新是同步还是异步的?为什么?

异步,因为react更新底层的(微任务)异步队列,会将短时间内js对组件的更新合并,1次渲染完成更新。

useEffect的执行时机?

看第一点

useEffect的返回函数执行时机

1,组件卸载的时候
2,状态发生变化时

应用场景:用于聊天的卸载

这篇关于React学习-hooks的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134883

相关文章

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

HTML5 中的<button>标签用法和特征

《HTML5中的<button>标签用法和特征》在HTML5中,button标签用于定义一个可点击的按钮,它是创建交互式网页的重要元素之一,本文将深入解析HTML5中的button标签,详细介绍其属... 目录引言<button> 标签的基本用法<button> 标签的属性typevaluedisabled