React-更新state的数据,dom没有重新渲染

React 源码分析 - setState() 之后没有重新渲染的问题原因与解决方法 问题背景 假设我们正在开发一个让用户填写的表单,比如说登录页面的账号密码表单。 return ( <form> <p>账户:</p> <input type="text" name="firstname"><br> <p>密码</p> <input type="password" n... 阅读详情
{entourageList.map((person) => (
  <Row key={person.id}>  {/* 使用唯一的 person.id */}
    <Col span={16}>
      <Row gutter={16}>
        <Col lg={9} md={18} sm={24}>
          <FormItem label={'姓名'}>
            {getFieldDecorator(`name-${person.id}`, {
              initialValue: person.name,
              rules: [
                {
                  required: false,
                  whitespace: true,
                  message: formatMessage({ id: 'common_msg_no_name' }),
                },
              ],
            })(<Input maxLength={20} />)}
          </FormItem>
        </Col>
        <Col xl={{ span: 9, offset: 3 }} lg={{ span: 12 }} md={{ span: 18 }} sm={24}>
          <FormItem label={'手机号'}>
            {getFieldDecorator(`mobile-${person.id}`, {
              initialValue: person.mobile,
              rules: [
                {
                  required: false,
                  pattern: new RegExp('^(1)\\d{10}$'),
                  message: formatMessage({ id: 'common_msg_phone_err2' }),
                },
              ],
            })(<Input maxLength={11} />)}
          </FormItem>
        </Col>
      </Row>
    </Col>
    <Col span={3} style={{ marginLeft: 10 }}>
      <FormItem label={'照片'}>
        {getFieldDecorator(`featurePhoto-${person.id}`, {
          initialValue: person.featurePhoto && person.featurePhoto.length > 0 ? [person.featurePhoto] : [],
        })(
          <UploaderPictureWall
            limit={1}
            onAdd={onAddFileList2}
            onDelete={onDeleteFileList2}
            index={person.id}  // 使用唯一的 id
            multiple
          />,
        )}
      </FormItem>
    </Col>
    <Col span={3} style={{ marginLeft: 10 }}>
      <FormItem label={<div style={{ opacity: 0 }}>占位</div>}>
        <Button
          type="primary"
          onClick={handleAddPerson}
          disabled={entourageList.length >= 5}
        >
          添加
        </Button>
        <Button
          style={{ marginLeft: 10 }}
          type="primary"
          onClick={() => handleDeletePerson(person.id)}  // 使用 person.id 作为删除依据
          disabled={entourageList.length <= 1}
        >
          删除
        </Button>
      </FormItem>
    </Col>
  </Row>
))}

state的entourageList数据改变,dom没有重新渲染导致页面显示与state数据不一致。解决办法:加上唯一的key值 如下:<Row key={person.id}>  {/* 使用唯一的 person.id */}

前端React篇之哪些方法会触发 React 重新渲染?重新渲染 render 会做些什么? 在React中,setState方法用于更新组件的状态,并触发重新渲染。通过setState方法,我们可以根据不同的需求更新组件的状态,使得页面能够及时显示最新的数据和交互效果。在使用setState时,需要注意更新状态的方式和时机,以及遵循React的一些规范和最佳实践,以保证代码的可读性、性能和可靠性。方法是React提供的一种手动触发组件重新渲染的方式。它允许绕过React的自动重新渲染机制,强制执行组件的更新。但需要注意,使用可能引起性能问题和不可预测的行为,所以应该谨慎使用,并优先考虑使用。 阅读详情

相关推荐

React-组件渲染和更新的实现

最近一直写React,慢慢就对里面的一些实现很好奇。最好奇的就是自定义标签的实现和this.setState的实现。这里不分析JSX是如何解析的,所有组件都用ES5方式编写。组件渲染渲染时候,我们会调用render方法。

柒青衿的博客 1万+

React中响应式数据变了界面却未更新(重新渲染) 踩坑!!

React中响应式数据变了界面却未更新(重新渲染) 踩坑!!

a1071626267的博客 5652

如何用 OBProxy 实现 OceanBase 的最佳路由策略

本文基于业务中一类常见的路由问题展开,对OceanBase的路由功能及对应配置项做详细介绍,指导用户在业务实践中如何正确的配置路由策略及快速排查路由问题

OceanBase分布式数据库的博客 1679

React 之 state 数据改变页面不更新未重新渲染的 7 种情况 及 解决办法

1. 在redux中修改state页面未更新 解决办法: 请检查你的state是不是直接改变原state的, 记住不要直接修改state 原因: reducer 中 state 是引用,在 reducer 中改变 state 是错误的, 虽然 store 里面的 state 是改变了,但是 react - redux 会认为dispatch 前后的 state 没有改变,就不会重新渲染页...

末代前端程序员 6万+

【PCIe硬件】PCIe引脚PRSNT与热插拔

热插拔的基本目的是要让PCIe设备按照规定的顺序、原则,从系统中移除或插入到系统中来,并能正常的工作,且不影响系统的正常运行。事实上,PCIe“热插拔”的关键目的就是为前面面所提到的系统RAS服务的,是提升系统RAS能力的非常重要的手段!注意,这里有两个相关概念,前面我们讲的热插拔,其实是广义的“热插拔”。这里的Hot-Plug,为了方便,我们叫做PCIe热插拔,也就是我们现在及后面将要讨论的内容。

smartvxworks的博客 2803

【OpenClaw从入门到精通】第05篇:实战!OpenClaw自动化搞定邮件/日历/文件管理(2026实测避坑版)

本文聚焦OpenClaw核心实用场景,手把手教你实现邮件、日历、文件管理的全自动化。通过安装三大核心技能,配置IMAP/SMTP邮箱、跨平台日历及文件沙盒权限,结合4个虚拟实战案例,演示从邮件自动摘要、会议冲突预警到下载文件夹分类的完整流程。文中包含2026实测的命令代码、配置步骤、排障方案,所有案例需在测试环境验证,代码未上传GitHub。兼顾新手入门与进阶需求,让OpenClaw从“能聊天”升级为“能干活”,帮你节省80%重复工作时间。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2674

React修改状态了但组件不重新渲染的坑

React修改了组件状态但是组件不重新渲染

weixin_50887064的博客 1309

XILINX RFSoC全面解析(五)—— Zynq UItrascale+ RF Data Converter IP核详解

这期我们来看看RFSoC独有的IP核——Zynq UItrascale+ RF Data Converter如何使用。 我使用的VIVADO版本是2018.3,这个是最低版本,要开发RFSoC,VIVADO版本必须不低于2018.3。 另外电脑配置也需要很高,64位,8核@3.4GHz CPU,16GB内存,固态硬盘基本就是低配,跑起来很勉强。建议有条件的朋友使用工作站或者服务器。 首先在VIVADO中新建一个工程,因为我使用的是xilinx官方的开发板,所以可以直接设定选board就行。 在I

1万+

react hooks钩子时useState更新不渲染组件,更新的数据是对象,怎么解决

使用深拷贝:在更新 state 时,使用深拷贝将旧的 state 值复制给新的 state,这样一来,新的 state 值的地址与旧的 state 不同,就能够触发重新渲染了。在上述代码中,使用 JSON.parse(JSON.stringify()) 方法对旧的 state 进行深拷贝,并修改其 age 属性后作为新的 state 值,从而可以正常触发重新渲染。使用不可变数据类型:使用不可变的数据类型,如字符串、数字和布尔值,而不是引用类型的对象,这样就不会出现值被修改但地址相同的问题。

weixin_47411869的博客 3404

把 ABAP Unit 测试放进本地类:让重构更安全、让测试更好找的组织方式

ABAP测试代码组织策略:单元测试与集成测试的合理存放位置 本文针对ABAP开发中测试代码组织混乱的问题,提出了一套系统化的解决方案: 单元测试应存放在被测类的本地测试include中(...CCAU或...T99),确保测试与代码同步演进且易于发现 跨对象测试(组件/集成/系统测试)应创建单独的全局测试类,并通过FOR TESTING和ABSTRACT进行防护 使用! @testing注释建立测试关系,使测试与被测对象明确关联,提高可发现性 针对不同技术栈(RAP/CAP/OData)提供了具体落地建议,

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1729

零基础入门篇③ PyCharm使用指南(个性化设置、开发必备插件、常用快捷键)

Python从入门到精通👉零基础入门篇③

hacker707的博客 4374

总结:React 中的 state 状态

`props`:只读,父组件通过 `props` 传递给子组件其所需要的状态;子组件内部不能直接修改`props`,只能在父组件中修改。`state`:可变,是组件内部维护的一组用于反映组件UI变化的状态集合。 React 会将更新函数依次加入队列,以便在事件处理函数中的所有其他代码运行后进行处理。在下一次渲染期间,React 会遍历队列并给你更新之后的最终 state。

李刚的学习专栏 1419

threejs中使用Reflector实现出倒影效果,并实现背景透明的效果(Reflector镜面背景透明, 倒影弱化)

在项目中遇到要实现倒影效果,threejs给我们提供了Reflector,可以轻松完成镜面效果,实现倒影。但背景不透明;并且反射出的倒影太亮了;网上没搜到解决方案, 自己修改了下源码实现了想要的效果,做个记录...

weixin_40856652的博客 5720

Antd Table新增数据后state数据改变后 组件没有重新渲染

onCreate =async (values) => { let newInfo=getInfoData() ck++ newInfo.push({ key:ck, ...values }) setInfoData(newInfo); this.setVisible(false); this.getInfo() }; 本想在本地模拟数据的存取和table的表现, 出了点问题 onCreate方法为提..

WhiteCover的博客 6583

科研绘图系列:R语言绘制宏基因组分析的可视化图形(network & barplot & heatmap)

科研绘图系列:R语言多图形组合(network & barplot & heatmap)

专注生信领域 643

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

React的Table组件在更新dataSource时,未重新渲染页面

1. 由于dataSource是list对象,如果采用如下方法,则只是操作引用: handleDataSource = () =&gt; { let temp = this.state.dataSource; temp.push({ id: 'a', key: 'a', jobName: 'a', jobGrou...

qq_28060549的博客 2万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

React组件渲染后对DOM的操作示例

文章目录 在React.js中基本不需要对DOM进行操作,可以直接通过 setState 的方式重新渲染组件,渲染的时候可以把新的 props 传递给子组件,从而达到页面数据更新的效果。 但是有的时候需要组件渲染完后对DOM进行一些操作,比如表单提交后对其中的&lt;input&gt;中的内容进行清空,重新定义鼠标焦点,下面以1个简单的例子进行说明。先看下显示效果: 在上例中,组件渲染结束后,清...

虚怀若愚 7762

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

开篇:通过 state 阐述 React 渲染

React中,有两种原因会导致组件的渲染: ① 组件的初次渲染。② 组件(或者其祖先之一)的状态发生了改变。 State setter 函数更新变量(状态发生改变)并触发 React 再次渲染组件。

李刚的学习专栏 1477

React Table dataSource 更新,Table未重新渲染

例子 直接给出未更新例子 可能跟你所写的代码不一样,但是可以参考看看 const [tableData,settableData]=useState(Array) const columns=[ ... ] let change=(value)=>{ //* let tabledata=tableData tabledata.push(value) settableData(tabledata) ... } ... return( <Table columns={col

JeffanChen的博客 6297

React 渲染机制与重新渲染原理

简单解析 React 的渲染机制、重新渲染原理以及性能优化策略,帮助开发者更好地理解 React 的工作原理并编写高性能的应用。

qq_58096041的博客 1377

React性能优化篇:如何避免不必要的重新渲染?

本文深入探讨了React应用中不必要的重新渲染问题及其对性能的影响。文章分析了触发重新渲染的核心原因,包括State更新、Props变化、Context更新等,并提供了React.memo、useCallback、useMemo等关键优化策略,以及如何使用React DevTools进行性能分析,帮助开发者有效提升应用流畅度。

aa123的博客 633

讲清楚 React 的重新渲染

最近找到一个VUE的文档,它将VUE的各个知识点进行了总结,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实,对各个知识点的讲解也十分到位。

老司机的后备箱 3302

vue和react,父组件数据更新,子组件会重新渲染吗

简单来说,可以将两者的区别归纳为:​​React​​:父组件更新 → ​​默认重新渲染所有子组件​​ → 通过虚拟DOM Diff找出真实变化 → 更新DOM。开发者需​​显式控制​​子组件是否渲染。​​Vue​​:父组件数据变化 → 响应式系统​​精准找出依赖该数据的子组件​​ → 只重新渲染这些子组件 → 通过虚拟DOM Diff找出真实变化 → 更新DOM。更新是​​自动优化​​的。​​为什么会有这种根本性的差异?​​这源于两者不同的设计哲学和诞生背景。​​React​。

qq_41901084的博客 508

React——State

button>

2401_87573999的博客 1091
上一篇: css-适配不通屏幕分辨率
下一篇: AntDesignPro document.ejs文件详解
聆听。。花开雨落
博客等级 码龄11年 91粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值