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

React点击按钮反转表格名字后无法更新UI显示问题求助

问题排查

  • 核心问题在RevereName函数的状态更新逻辑错误:getData数组的每一项原本是{name: 名字, price: 财富}结构的对象,但你在循环中反复调用setgetData([rev]),直接把整个数组替换成仅包含当前反转字符串的单元素数组,完全破坏了原有数据结构、丢失了所有price字段,渲染时读取user.name无法正常匹配,自然不会出现预期的UI更新。
  • 循环内重复调用setgetData会造成不必要的重渲染,最终状态也只会保留最后一次循环的赋值结果。
  • 额外存在JSX结构不规范问题:表格tbody、tr内嵌套div不符合HTML表格规范,可能引发渲染异常。

修正代码

1. 修复反转函数

const RevereName = () => {
  // 生成全新数组,遵循React状态 immutable 更新原则
  const updatedData = getData.map(item => {
    // 反转名字字符串,保留原有实现逻辑
    let rev = ""
    for (let i = item.name.length - 1; i >= 0; i--) {
      rev += item.name[i]
    }
    // 返回新对象,保留原有price字段,仅更新name
    return {
      ...item,
      name: rev
    }
  })
  // 统一更新状态
  setgetData(updatedData)
}

如果想简化字符串反转逻辑也可以直接用内置方法:

const reversedName = item.name.split('').reverse().join('')

2. 修复表格渲染的JSX结构

去掉多余的div嵌套,给循环项添加唯一key:

<tbody>
  {
    getData.map((user, index) => (
      <tr key={index}>
        <td className="font-weight-bolder text-capitalize">{user.name}</td>
        <td className="font-weight-bolder treu">{user.price}</td>
      </tr>
    ))
  }
</tbody>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:42:02