【发布时间】:2021-11-11 23:45:22
【问题描述】:
我尝试映射一个数组并将其作为 Dom 元素输出,它运行良好,但我想向它添加一个删除功能,以便我可以删除具有相应 id 的任何元素,但由于某种原因,当我点击删除按钮它显示 name.map IS NOT A FUNCTION 我试图解决这个问题,但它不起作用,所以从 Chrome 网上商店安装 REACT 扩展,当我在组件中打开开发人员工具时,我看到删除按钮分配到每个元素,我可以从那里删除它,但在实际的 UI 中我不能为什么?
这里是开发工具的代码和截图
import React, {useState} from 'react'
function Deletecomponent() {
const [name, setName] = useState([
{
text:'i am new here',
author:'Hashim',
id:1
},
{
text:'i am new but not here',
author:'Hashim',
id:2
},
{
text:'i am not new here',
author:'Hashim',
id:3
},
]);
const handleDelete = (id) => {
const newName = name.filter(name => name.id !== id )
setName({newName});
console.log(id);
}
return (
<div className='content'>
{name.map(name => (
<div>
<h2>{name.text}</h2>
<p>{name.author}</p>
<button onClick={()=> handleDelete(name)}>Delete</button>
</div>
))};
</div>
)
}
export default Deletecomponent
【问题讨论】:
-
setName({newName});所以name现在是一个对象,而不是一个数组。你不能在非数组对象上调用.map。 -
那么解决办法是什么,我该如何更新 setName
-
通过传递
newName而不是对象。 -
不要忘记someone answers时该做什么。干杯。
标签: arrays reactjs react-hooks