【发布时间】:2019-09-27 12:01:07
【问题描述】:
我有一个<div> 标记,其中包含不同数量的按钮。单击每个按钮时,我都会显示一个反应变量。我的问题是,每当我单击任何按钮时,都会显示每个隐藏的文本;但是我只希望按钮在单击它们时显示它们的隐藏文本,以便它们的行为独特。
我已经尝试了一些条件渲染的想法,但我不确定如何正确地攻击它。
我有一个为每个教堂创建按钮的函数。这是那个函数:
createButtonsForChurches(arr) {
var listOfButtons = [];
for (var i = 1; i < arr.length; i++) { // loop through each church
var currentButton = (
<div>
<button onClick={this.toggle} className="churchButton">{arr[i].name}</button>
{
this.state.on && (
<div className="allContent">
<div className="individualContent">
{(arr[i].femaleStudents[0]) && this.createContentParagraphTextForArray(arr[i].femaleStudents, "Female Students")}
</div>
<div className="individualContent">
{(arr[i].femaleLeaders[0]) && this.createContentParagraphTextForArray(arr[i].femaleLeaders, "Female Leaders")}
</div>
<div className="individualContent">
{(arr[i].maleStudents[0]) && this.createContentParagraphTextForArray(arr[i].maleStudents, "Male Students")}
</div>
<div className="individualContent">
{(arr[i].maleLeaders[0]) && this.createContentParagraphTextForArray(arr[i].maleLeaders, "Male Leaders")}
</div>
</div>
)
}
</div>
);
listOfButtons.push(currentButton);
}
return listOfButtons;
}
您还可以看到为 onClick 属性调用的切换函数。这是我的切换方法和构造函数:
constructor(props) {
super(props);
this.toggle = this.toggle.bind(this);
this.state = {
on: false
}
}
toggle() {
this.setState({
on: !this.state.on
});
}
我不想放太多代码并使事情复杂化 - arr 是一个对象数组。这些对象包含 4 个不同的数组,每个数组包含不同数量的对象。所以 - arr 是教堂列表,其中包含作为对象的教堂,每个教堂包含 4 个数组(男女学生和领导者),在这 4 个数组中的每一个中,无论他们属于哪里,都有成员作为对象
我不知道如何只显示我单击的按钮的隐藏文本。希望得到一些帮助。
【问题讨论】:
-
在上面的问题中粘贴
arr数组,因为没有arr就很难理解。 -
arr 描述已添加
-
你可以尝试使用 refs 来解决这个问题:reactjs.org/docs/refs-and-the-dom.html
-
@rowlandev 刚刚添加了一个可行的解决方案,我希望它能解决问题。请检查。
标签: reactjs button event-handling state collapsable