gpt4 book ai didi

javascript - 在循环中通过setState添加className

转载 作者:行者123 更新时间:2023-11-30 11:17:06 25 4
gpt4 key购买 nike

如何使用 setStateclassName="active" 分配给循环

this.state = {clicked: true}
...
{i.rate_plans.map((j,index) => {
return(
<div key={index}>
<h2 onClick= {() => this.setState({clicked: !this.state.clicked})}>{j.name}</h2>
<div className=${this.state.clicked ? '' : 'active'}>...</div>
</div>
)
})}

这会将类添加到循环中的所有项目。如何添加到单击的项目,而不是其他项目?

最佳答案

您可以保留一个对象来跟踪所有已被点击的rate_plans

示例

class App extends React.Component {
state = {
rate_plans: [{ name: "test" }, { name: "test2" }],
clicked_rate_plans: {}
};

onClick = plan => {
this.setState(previousState => {
const clicked_rate_plans = { ...previousState.clicked_rate_plans };
clicked_rate_plans[plan.name] = !clicked_rate_plans[plan.name];
return { clicked_rate_plans };
});
};

render() {
return (
<div>
{this.state.rate_plans.map((j, index) => {
return (
<div key={index}>
<h2 onClick={() => this.onClick(j)}>
{j.name} {this.state.clicked_rate_plans[j.name] && " clicked"}
</h2>
</div>
);
})}
</div>
);
}
}

关于javascript - 在循环中通过setState添加className,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51123530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com