如何只选择.map()的一个元素?

时间:2018-08-07 14:07:47

标签: javascript reactjs

我有一个.map()函数,该函数根据从woocommerce api提取的产品数量返回我要渲染的这些按钮。 我还具有onclick函数,在该函数中,仅应选择一个按钮,然后依次className进行切换。

但是,通过脚本,我可以选择数组的所有元素。众所周知,我必须将唯一的key={}传递给函数才能获得所需的结果,但是这样做很麻烦:/这是我的代码,没有尝试https://codesandbox.io/s/018488478p

我看过之前的这些问题: How to toggle class for the only one element on click in react How to modify only one element in a react .map function? 但由于某种原因,我无法将其复制到我的代码中-这是我的新手,如果可以轻松解决,请原谅我的无知!

当切换非常烦人时,我的div又如何扩展? :( 您认为使用单选按钮更好吗?

3 个答案:

答案 0 :(得分:1)

我喜欢这种情况,我喜欢跟踪处于这种状态的选定元素: https://codesandbox.io/embed/rm8n26po1q

更新: 我更新了沙箱,不包含ID,以及其他一些改进

答案 1 :(得分:0)

好像您正在尝试读取产品的ID,但是您从未设置其ID。为每个产品添加id属性

答案 2 :(得分:0)

在您的状态下,将showL1设置为true或false,这意味着它们都将获得样式。在handleSelectL1中,应将状态为“ selectedItemId”或类似状态的键设置为传入的ID。然后在className中,可以使用className={this.state.selectedItemId === p.id ? "selectedRBox" : "selectorRBox"