【发布时间】:2020-04-15 17:32:56
【问题描述】:
我有一个页面使用一个包含列表中的列表的对象。我的所有组件都正确显示了数据,但我正在尝试为每个主要列表项添加一个切换按钮,以便您可以显示/隐藏他们的子列表。我之前做过一些单击时会影响组件的每个实例的操作,因此当您单击 expand 按钮时,它将切换每个主要项目的子列表。
React 对我来说是新的,我将这个项目部分用作学习工具。我认为这与将状态绑定到组件的特定实例有关,但我不确定如何或在何处执行此操作。
这是组件:
const SummaryItem = props => {
const summary = props.object;
return(
<div className="summary_item">
{Object.entries(summary).map( item =>
<div>
Source: {item[0]} <br />
Count: {item[1].count} <br />
<button onClick={/*expand only this SummaryItemList component*/}>expand</button>
<SummaryItemList list={item[1].items} />
</div>)
}
</div>
);
}
我之前有一个状态钩子,看起来像:
const [isExpanded, setIsExpanded] = useState(false);
const toggle = () => setIsExpanded(!isExpanded);
在我的渲染函数中,按钮在 onClick 中具有切换功能:
<button onClick={toggle}>expand</button> 和我有一个条件 if(isExpanded) 有两个渲染,一个带有 SummaryItemList 组件,一个没有。
除了映射对象之外,还有更好的方法吗?如何绑定切换的状态以仅影响它应该影响的实例?
【问题讨论】:
-
正如您所解释的问题,该按钮仅在第一次时有效,对吗?