You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React setState更新状态正确但未触发DOM重渲染新增项目问题

问题根本原因

你在render方法中遍历渲染用的是组件外部定义的初始静态常量projects,而非this.state中存储的会动态更新的项目列表。所以无论你怎么调用setState更新state内的projects值,渲染的数据源始终是固定不变的初始数组,自然看不到新增的项目。

修正方案
  1. 仅需要修改render方法中遍历的数据源,把projects.map替换为this.state.projects.map即可解决问题。
  2. 可选优化:遍历的key直接使用项目自身唯一的id属性,比索引、title更可靠,可避免潜在的列表渲染异常。

修正后的核心代码片段如下:

render () {
    return (
        <div className='App'>
            <input type='button' value='Add project' onClick={this.addProject}/>
            <div className='projects'>
                {/* 这里改成从state取数据,key用项目自身id */}
                {this.state.projects.map((project) =>
                    <div className='Project' key={project.id}>
                        Project-Title: { project.title}
                    </div>
                )}
            </div>
        </div>
    )
}

你之前尝试的forceUpdate、数组深拷贝、修改key为title都没有命中核心问题,只要渲染数据源不对,无论怎么触发重渲染、怎么正确更新state,最终渲染的内容都是固定的初始值,自然看不到更新效果。

内容的提问来源于stack exchange,提问作者NeilArmstrong9000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 11:33:03