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

React列表key警告 编辑删除数据未同步到json-server

问题修复说明

你当前一共存在两个独立问题,分别对应控制台key警告、编辑删除无法持久化到json-server,修复方式如下:

1. 编辑、删除操作无法同步到json-server问题

你怀疑的两段请求代码就是问题根源:模板字符串使用错误。
JS中要使用${变量}的插值语法,必须用反引号()包裹整个字符串,不能用单引号(')。你当前写的单引号包裹的字符串里,${id}、${isUpdate.id}会被当成普通文本,不会被替换为真实的id值,导致请求地址完全错误,json-server无法匹配到对应数据项,自然不会执行修改/删除操作。另外你写的delete请求地址还缺少了插值的闭合}`,属于语法疏漏。

修复代码

  • 将删除请求修改为:
axios.delete(`http://localhost:3000/contacts/${id}`)
  • 将编辑请求修改为:
axios.put(`http://localhost:3000/contacts/${isUpdate.id}`, {
  name: formData.name,
  telp: formData.telp,
})

额外优化建议

你当前的逻辑是先更新前端本地状态,再发接口请求,会出现请求失败时前端显示和后端数据不一致的问题,建议把本地状态更新逻辑移到接口请求成功的.then回调中执行,比如删除逻辑可以改成:

function handleDelete(id) {
  axios.delete(`http://localhost:3000/contacts/${id}`).then((res) => {
    const filteredData = contacts.filter((contact) => contact.id !== id);
    setContacts(filteredData);
    alert("Data telah dihapus");
  });
}

编辑逻辑同理,等put请求返回成功后再更新contacts数组。

2. 控制台"Each child in a list should have a unique key prop"警告

这个警告是因为你在List组件中通过map循环渲染列表项时,没有给循环生成的最外层元素设置唯一的key属性。React需要通过key区分不同列表项,优化渲染性能。

修复代码

给List组件map返回的最外层div加上key={contact.id}即可,你每条联系人数据的id是全局唯一的,完全符合key的要求,修改后的List组件渲染部分代码:

export default function List({data,handleEdit,handleDelete}) {
  return (
    <div className="list-group">
      {
        data.map((contact) => {
            return (
        {/* 这里加上key属性 */}
        <div key={contact.id} className="list-group-item list-group-item-action">
        <div className="d-flex w-100 justify-content-between">
          <h5 className="mb-1">{contact.name}</h5>
          <div>
            <button onClick={() => handleEdit(contact.id)} className="btn btn-sm btn-link">Edit</button>
            <button onClick={() => handleDelete(contact.id)} className="btn btn-sm btn-link">Del</button>
          </div>
        </div>
        <p className="mb-1">{contact.telp}</p>
      </div>
            );
        })}
    </div>
  );
}

修改完成后刷新页面,控制台的key警告就会消失。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:27:33