【发布时间】:2021-05-28 23:10:27
【问题描述】:
我正在从 api 获取一些数据(以数组形式)并将其分配给称为项目的状态。然后通过以下代码为状态的每个项目调用一个 Item 组件:
<div>
{items.length} results found for {search_term}
{items.map((item) =>
(item.active_price > 0 && item.show) ? <Item key={item.id} details={item} items={items} setItems={setItems}/> : ""
)}
</div>
下一个计划是在 Item 组件中添加一个删除按钮,这将在 items 状态下将 show 的值更改为 false(对于单击的项目)。我在想的是,随着状态的变化,项目状态将被重新渲染,并且变为 false 的项目将从视图中隐藏。我在按钮上添加了一个 onCLick 事件监听器,功能是:
const handleClick = () => {
console.log(({...props.items,[props.details.number - 1]:false}))
// props.setItems(prevState=>({...prevState,[props.details.number - 1]:false}))
}
我稍后会调用 props.setItems,但现在,我想看看我是否可以编辑该元素以将显示变为 false。上面的代码用 false 替换了整个索引。
在onClick函数中,我只想编辑show的值,而不是替换整个条目。我试过了:
({...props.items,[props.details.number - 1][show]:false})
和
({...props.items,[props.details.number - 1].show:false})
分别在[show] 和.show 之前显示语法错误。如何编辑我的 handleClick 函数以正确编辑 show 的值。
谢谢。
【问题讨论】:
标签: reactjs ecmascript-6