为什么在 React 中使用对象类型作为 state 时,onChange 事件会触发两次?

为什么在 react 中使用对象类型作为 state 时,onchange 事件会触发两次?

React 中 onChange 事件触发多次的解析

在 React 应用开发中,一个常见的困惑是:输入框内容变化时,onChange 事件处理函数会被调用两次。本文将分析这种现象,特别是当 state 使用对象类型时,为何会触发两次调用,而使用基本数据类型(如数字)时只会触发一次。

问题示例:

import React, { useState } from "react";export default function Child() {  const [state, setState] = useState({});  const onChange = (event) => {    console.log("onChange", state); //此处打印两次    setState({...state, [event.target.name]: event.target.value});  };  return (    
);}

在这个例子中,每次输入变化,onChange 函数和 console.log 语句都会执行两次。

问题根源:React 严格模式

这并非代码错误或环境问题,而是 React 的 严格模式 (StrictMode) 的设计特性。在开发环境中启用严格模式,React 会故意进行两次渲染,以帮助开发者尽早发现潜在问题。

严格模式会对某些函数进行双重调用(仅限于应为纯函数的函数)。第一次渲染用于检测副作用,第二次渲染才是实际的 DOM 更新。当 state 为对象类型时,由于对象是引用类型,React 会将其视为可能存在副作用,从而触发双重渲染和调用。而基本数据类型由于没有副作用,则只会渲染一次。

美间AI 美间AI

美间AI:让设计更简单

美间AI 261 查看详情 美间AI

解决方案

解决方法取决于你的需求:

生产环境: 在生产环境中,严格模式默认禁用,因此这个问题不会出现。

开发环境: 如果在开发环境中需要避免双重调用,可以考虑以下几种方法:

使用 useCallback 钩子:onChange 函数用 useCallback 包裹,可以避免不必要的重新渲染和重复调用。

  const onChange = useCallback((event) => {      console.log("onChange", state);      setState({...state, [event.target.name]: event.target.value});  }, [state, setState]);

检查并避免不必要的 state 更新: 确保你的 setState 调用只在必要时进行,避免无意义的重复更新。 例如,可以使用函数式更新来避免不必要的重新渲染:

  setState(prevState => ({...prevState, [event.target.name]: event.target.value}));

禁用严格模式 (不推荐): 可以在你的组件中禁用严格模式,但这会失去严格模式带来的潜在问题检测能力,因此不推荐。

总结

onChange 事件在 React 中触发多次,通常是由于开发环境下的严格模式导致的双重渲染。理解其原因,并根据实际情况选择合适的解决方案,可以有效地解决这个问题,并提高代码质量。 使用 useCallback 或函数式更新是推荐的解决方法,可以保持严格模式带来的好处,同时避免不必要的重复渲染和函数调用。

以上就是为什么在 React 中使用对象类型作为 state 时,onChange 事件会触发两次?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/890567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月28日 14:40:35
下一篇 2025年11月28日 14:45:02

相关推荐

  • 欧易app官方下载_2025易欧ok交易平台 v6.144.0 安卓最新版

    欢迎来到欧易(okx)官方下载页面!欧易是全球领先的数字资产交易平台,为数千万用户提供安全、可靠的加密货币交易和资产管理服务。我们为您带来最新的 2025 易欧ok交易平台 v6.144.0 安卓版,全新升级的界面和功能,让您轻松交易比特币、以太坊等数百种数字资产。立即下载官方app,开启您的数字金…

    2025年12月10日 好文分享
    000
  • USDT的运作逻辑,为什么它这么稳

    Binance币安 欧易OKX ️ Huobi火币️ USDT之所以“稳”,核心在于它用一套中心化的储备金机制,努力维持自己与美元1:1的锚定关系。它的稳定不是靠市场共识,而是靠背后的资产支撑和发行方Tether公司的操作。 储备金托底:一美元换一USDT Tether公司宣称,每发行一枚USDT,…

    2025年12月10日
    000
  • 欧易okx官网最新登录地址 欧易交易所官方入口

    为了安全、稳定地访问欧易(okx)交易所,使用官方app是最佳选择。许多用户在寻找官网登录地址时,实际上最需要的是一个可靠的官方入口。然而,部分安卓手机用户在从官方渠道下载app后,可能会遇到系统提示“安全风险”、“病毒风险”而无法安装。本文将指导您如何解决这些问题,确保您能顺利通过官方app进入欧…

    2025年12月10日 好文分享
    000
  • 欧易okx官网地址链接 2025最新版

    为了确保您的资产安全,请务必通过官方渠道访问欧易okx。本文为您提供最新的官网访问信息,并附上详细的app安装指南,以解决部分手机在下载后遇到的安装难题。 欧易官网直达: 欧易官方app: 华为安卓版手机安装指南 1、当您看到“是否允许安装应用”提示时,请点击“允许”,不要选择禁止。 2、系统可能会…

    2025年12月10日 好文分享
    000
  • 2025易欧ok交易所app v6.140.1 安卓最新版

    欢迎下载2025易欧ok交易所app v6.140.1安卓最新版。在安装过程中,部分安卓手机可能会因为系统的安全策略,弹出“安全风险”、“病毒风险”等提示,从而导致无法正常安装。如果您遇到此类问题,请不必担心,参照以下详细指南即可顺利完成安装。 欧易官网直达: 欧易官方app: 华为安卓版手机安装指…

    2025年12月10日 好文分享
    000
  • Hyperliquid陷“四面楚歌”:王座失守与绝地反击

    目录 凛冬已至:失守的王座与“数据黑洞”组合拳反击:文化、基建与生态的三板斧护城河之辩:喧嚣过后,Hyperliquid还剩下什么? hyperliquid作为去中心化衍生品交易所近期面临严峻挑战,市场份额被竞争对手aster大幅挤压,同时生态内安全事件频发,稳定币计划尚未成熟。面对竞争,hyper…

    2025年12月10日 好文分享
    000
  • 止损单vs. 限价止损单全面指南:优缺点、类型以及使用介绍

    目录 什么是止损订单(Stop-Loss Order)?使用止损订单的优点与缺点止损订单的优点止损订单的缺点止损订单的类型:卖出止损(Sell Stop)和买入止损(Buy Stop)1.卖出止损订单(适用于多头头寸)2.买入止损订单(适用于空头头寸)如何在加密货币交易中使用止损订单如何确定止损的理…

    2025年12月10日 好文分享
    000
  • 比特币周期魔咒重演?2025年Q4或迎历史性高点

    目录 已实现利润与持币时长销毁指标已实现利润持币时长销毁指标长期持有者供应量比特币主导地位200 周移动平均线已实现价格与 MVRV-Z 分数已实现价格MVRV-Z 分数恐惧与贪婪指数总结展望‍ 加密货币的采用周期通常包含三年的增长扩张期,随后是持续约一年的熊市。 若从 2022 年 11 月 BT…

    2025年12月10日 好文分享
    000
  • 欧意交易所个人账号身份认证新手全指南

    目录 如何确认 app 是否已更新至最新版本? 个人账户身份认证如何操作? 视频认证流程是什么? 身份认证入门指南 1.怎样提升交易与提币额度? 2.持有多个国籍时应使用哪一个进行验证? 3.为何选民卡不能作为有效证件? 4.哪些是政府颁发的有效身份证明? 5.为什么需要提交住址信息? 6.未满 1…

    2025年12月10日 好文分享
    000
  • Syndicate(SYND)币是什么?怎么样?Syndicate技术架构、代币经济及风险分析

    目录 Syndicate概述为什么应用链需要可编程序列器Syndicate 的目标用户核心技术与架构智能排序器和“智能汇总”原子可组合性和可升级性时间线和生态系统进展生态系统协调和流动性引导SYND 代币和经济分配:SYND 实用性和价值捕获市场可用性和基本指标生态系统进展社区互联网路径支持经济方面…

    2025年12月10日
    000
  • 2025年前景看好的代币推荐:HIFI、ASTER、SERAPH、KAITO、XPL

    关键要点 HIFI 在退市消息后出现轧空行情,24小时内飙升95%,展现高风险高回报潜力。 KAITO 凭借AI项目生态发展与空投资格锁定,持续吸引市场关注,需求强劲。 ASTER、SERAPH 和 XPL 因技术回调及获利了结出现下跌,为投资者提供潜在入场机会。 最佳加密货币投资:HIFI、AST…

    2025年12月10日
    000
  • 欧易OKE交易平台Android版本 v6.141.1 官方正版下载

    欧易OKE交易平台作为全球领先的数字资产服务平台,为广大用户提供了安全、稳定且功能丰富的移动端交易体验。在此,我们为您提供欧易OKE交易平台Android版本 v6.141.1的官方正版下载指引,确保您的数字资产安全无忧。 欧易oke官网入口: 欧易OKE APP下载: 为什么选择欧易OKE平台 1…

    2025年12月10日
    000
  • 加密牛市尚未结束?各项指标未达峰值?一文剖析

    目录 1)链上指标MRVZNUPL比特币储备风险2)月线RSI指标3)商业周期关联性(采购经理指数PMI)4)50周移动平均线支撑5)近期新闻头条6)”图表早有征兆”7)加密货币总市值(不含比特币)8)社交媒体 为什么我不认为我们已经达到牛市顶峰? 自2024年初以来我就没做…

    2025年12月10日 好文分享
    000
  • ASTER币为什么暴涨?ASTER币价格暴涨背后的原因分析

    目录 一条推文如何引发7000%的涨幅1.改变一切的背书2.市场心理与病毒式传播势头3.挑战空投引力革命性的DEX技术:隐藏订单与市场创新1.隐订单技术的先发优势2.永续合约交易市场机会3.技术路线及发展进展ASTER价格分析:技术水平和市场结构1.当前价格走势和支撑位2.阻力目标和突破情景3.成交…

    2025年12月10日 好文分享
    000
  • 什么是RWAs?如何运作?一文解析RWAs未来挑战与风险

    目录 什么是现实世界资产(RWA)RWA 代币化是如何运作的RWAs 代币化的优势RWA 代币化的挑战与风险RWA 的实际应用场景为什么 RWA 是 DeFi 的游戏规则改变者释放数万亿美元的价值多样化与稳定收益连接传统金融与去中心化金融RWA-DeFi 领域的先驱项目CentrifugeMaker…

    2025年12月10日
    000
  • zkVerify(VFY)币是什么?zkVerify项目概述,代币经济与未来发展介绍

    目录 ZkVerify (VFY)最新动态zkVerify是什么zkVerify技术架构:模块化验证、跨生态接入VFY代币经济学zkVerify(VFY)战略重要性zkVerify路线图市场和投资者影响常问问题关键要点 zkverify 将“证明验证”从通用的 l1/l2 层分离出来,形成一个独立的…

    2025年12月10日
    000
  • ETH价格分析:以太坊价格触底了吗?原因及后续走势解析

    引言:ETH 价格触底了吗?以下是你需要了解的信息 如果您最近一直在关注以太坊的价格走势,可能已经注意到它从4,800美元的高点一路滑落至4,260美元附近。这一波剧烈回调让不少投资者开始思考:我们是否已经接近本轮周期的底部?在经历了快速上涨后的大幅回撤,市场情绪趋于谨慎。本文将深入剖析近期ETH价…

    2025年12月10日
    000
  • 什么是实名认证?为什么如此重要?一文介绍KYC

    KYC(Know Your Customer),即“了解你的客户”,已经成为一项不可或缺的制度。它不仅仅是简单地核实用户身份,更是一个旨在防范非法活动、维护金融体系健康运行的综合性流程。通过对用户的身份、背景、交易行为进行审查,KYC帮助平台识别和阻止洗 钱、恐怖主义融资以及欺诈等犯罪行为,从而保护…

    2025年12月10日
    000
  • 黄金与比特币:谁将成为滞胀 2.0 的终极对冲工具?

    目录 20世纪70年代的似曾相识黄金作为滞胀对冲工具的历史作用比特币作为数字黄金超越比特币——ETF 和山寨币BTC展望XRP 展望结论:数字时代的对冲 美国最新数据正发出滞胀的早期信号。整体cpi环比上涨0.4%,高于预期的0.3%和之前的0.2%,推动年通胀率升至2.9%。通胀非但没有降温,反而…

    2025年12月10日 好文分享
    000
  • Solana交易费是多少?未来发展如何?Solana费用工作原理与前景分析

    目录 Solana 交易费是多少Solana 费用如何运作基本交易费计算单元 (CU)优先费用仓储租金2025 年 Solana 平均交易费Solana 费用为何如此低历史证明(PoH)+权益证明(PoS)高吞吐量并行处理(Sealevel 运行时)优化资源利用率Solana 费用与以太坊和其他区块…

    2025年12月10日
    000

发表回复

登录后才能评论
关注微信