当前位置: 首页 > news >正文

React Hooks 面试题 | 05.精选React Hooks面试题

在这里插入图片描述

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

    • 如何在 useState 中更新状态?请列举实例。
    • 如何在 useReducer 中更新状态?请列举实例。

如何在 useState 中更新状态?请列举实例。

useState 中,可以使用 setState 方法来更新状态。setState 方法接受两个参数:一个用于更新状态的函数和一个用于传递状态更新的依赖数组。

下面是一些更新状态的示例:

  1. 更新状态的函数接受两个参数:当前状态和更新后的状态。
import React, { useState } from 'react';function Example() {const [count, setCount] = useState(0);const incrementCount = () => {setCount(count + 1);};return (<div><p>Count: {count}</p><button onClick={incrementCount}>Increment count</button></div>);
}

在这个示例中,我们定义了一个名为 incrementCount 的函数,它接受一个 count 参数,并将其递增 1。然后,我们使用 setCount 方法将 count 设置为更新后的值。

  1. 更新状态的函数可以接受多个参数,这些参数将作为数组传递给函数。
import React, { useState } from 'react';function Example() {const [count, setCount] = useState(0);const incrementCount = (amount) => {setCount(count + amount);};return (<div><p>Count: {count}</p><button onClick={() => incrementCount(1)}>Increment count by 1</button><button onClick={() => incrementCount(5)}>Increment count by 5</button></div>);
}

在这个示例中,我们定义了一个名为 incrementCount 的函数,它接受一个 amount 参数,并将其与当前的 count 相加。然后,我们使用 setCount 方法将 count 设置为更新后的值。

  1. 更新状态的函数可以返回一个新状态,而不是直接更新状态。
import React, { useState } from 'react';function Example() {const [count, setCount] = useState(0);const incrementCount = () => {return setCount(count + 1);};return (<div><p>Count: {count}</p><button onClick={incrementCount}>Increment count</button></div>);
}

在这个示例中,我们定义了一个名为 incrementCount 的函数,它返回一个 setCount 调用,该调用将 count 设置为更新后的值。然后,我们将该函数作为按钮的 onClick 事件处理程序。

如何在 useReducer 中更新状态?请列举实例。

useReducer 中,可以使用 useReducer 提供的 dispatch 方法来更新状态。dispatch 方法接受一个事件对象作为参数,该事件对象包含一个 type 属性,该属性用于指定要执行的操作,以及一个 payload 属性,该属性包含要传递给操作的数据。

下面是一些更新状态的示例:

  1. 定义一个操作函数,它接受一个状态和一个事件对象作为参数,并返回一个新的状态。
import React, { useReducer } from 'react';function incrementCount(state, action) {return { count: state.count + action.payload };
}

在这个示例中,我们定义了一个名为 incrementCount 的操作函数,它接受一个状态和一个事件对象作为参数。事件对象包含一个 payload 属性,该属性包含要传递给操作的数据。

  1. 使用 useReducer 包裹我们的操作函数,并提供一个初始状态。
import React, { useReducer } from 'react';function Example() {const initialState = { count: 0 };const reducer = (state, action) => {switch (action.type) {case 'increment':return incrementCount(state, action);default:return state;}};const [state, dispatch] = useReducer(reducer, initialState);return (<div><p>Count: {state.count}</p><button onClick={() => dispatch({ type: 'increment', payload: 1 })}>Increment count</button></div>);
}

在这个示例中,我们定义了一个名为 reducer 的函数,它接受一个状态和一个事件对象作为参数。事件对象包含一个 type 属性,该属性用于指定要执行的操作,以及一个 payload 属性,该属性包含要传递给操作的数据。然后,我们使用 useReducer 包裹 reducer 函数,并提供一个初始状态。

  1. 使用 dispatch 方法来更新状态。
import React, { useReducer } from 'react';function Example() {const initialState = { count: 0 };const reducer = (state, action) => {switch (action.type) {case 'increment':return incrementCount(state, action);default:return state;}};const [state, dispatch] = useReducer(reducer, initialState);return (<div><p>Count: {state.count}</p><button onClick={() => dispatch({ type: 'increment', payload: 1 })}>Increment count</button></div>);
}

在这个示例中,我们定义了一个名为 reducer 的函数,它接受一个状态和一个事件对象作为参数。事件对象包含一个 type 属性,该属性用于指定要执行的操作,以及一个 payload 属性,该属性包含要传递给操作的数据。然后,我们使用 useReducer 包裹 reducer 函数,并提供一个初始状态。最后,我们使用 dispatch 方法来更新状态。

http://www.lryc.cn/news/269558.html

相关文章:

  • 2024收入最高的编程语言
  • Android笔记(二十三):Paging3分页加载库结合Compose的实现分层数据源访问
  • Python实现马赛克图片处理
  • 你能描述下你对vue生命周期的理解?在created和mounted这两个生命周期中请求数据有什么区别呢?
  • 【经典算法】有趣的算法之---蚁群算法梳理
  • 第八届视觉、图像与信号处理国际会议(ICVISP 2024) | Ei, Scopus双检索
  • 《HelloGitHub》第 93 期
  • JAVA B/S架构智慧工地源码,PC后台管理端、APP移动端
  • 【adb】--- win10 配置 adb环境 超详细 (持续更新中)
  • SQL注入安全漏洞详解
  • 数据结构与算法教程,数据结构C语言版教程!(第一部分、数据结构快速入门,数据结构基础详解)四
  • mac安装k8s环境
  • HarmonyOS4.0系列——04、@Styles、@Extend、@Extend事件以及多态样式stateStyles
  • C++项目之酒店客房管理系统架构——设计模式应用场景详解(下)
  • RabbitMQ消息存储JSON格式反序列化
  • Java解决统计有序矩阵中的负数问题
  • 【算法与数据结构】435、LeetCode无重叠区间
  • 【开题报告】基于SpringBoot的茶文化宣传网站设计与实现
  • 用通俗易懂的方式讲解大模型:基于 Langchain 和 ChatChat 部署本地知识库问答系统
  • YOLO训练results.csv文件可视化(原模型与改进模型对比可视化)
  • uni-appcss语法
  • java在线票务系统(选座)Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • Python 简易图形界面库easygui 对话框大全(续)
  • 电容器50ZLH56MEFC6.3X11
  • vscode 支持c,c++编译调试方法
  • MyBatis的缓存!!!!
  • ToB还是ToC?工业级与消费级AR眼镜都能干什么?
  • 设计模式-Java版本
  • 数据库中如何修改和删除字段
  • 在 Golang 应用程序中管理多个数据库