【发布时间】:2017-01-16 22:26:19
【问题描述】:
我有这个特殊的代码,它显示了每个问题和按钮的列表。当我单击按钮时,它将显示问题的具体答案。我的问题是,我有一堆问题,当我点击按钮时,它会显示所有答案,而不是该问题的具体答案。
这里是代码
class App extends React.Component {
constructor(){
super()
this.state = {
answer: [],
isHidden: true
}
this.toggleHidden = this.toggleHidden.bind(this)
}
componentWillMount(){
fetch('http://www.reddit.com/r/DrunkOrAKid/hot.json?sort=hot')
.then(res => res.json())
.then( (data) => {
const answer = data.data.children.map(obj => obj.data);
this.setState({answer});
})
}
toggleHidden(){
this.setState({isHidden: !this.state.isHidden})
}
render(){
const answer = this.state.answer.slice(2)
return <div>
<h1>Drunk or Kid</h1>
{answer.map(answer =>
<div key={answer.id}>
<p className="title">{answer.title}</p>
<button onClick={this.toggleHidden}>Answer</button>
{!this.state.isHidden && <Show>{answer.selftext}</Show>}
</div>
)}
</div>
}
}
const Show = (props) => <p className="answer">{props.children}</p>
这里是codepen的链接
【问题讨论】:
-
所有答案都共享同一个
isHidden状态。因此,当您切换该状态布尔值时,它们都会显示。您必须为每个答案隔离isHidden状态,以便让它们独立切换。由于 React 被设计为基于组件的,我建议为每个问题/答案组合创建一个组件,并在每个问题/答案组合中使用isHidden状态并映射该数据以为每个问题创建一个实例。 -
我找到了一个很好的教程,如果您想了解更多信息:noobieprogrammer.blogspot.com/2020/09/…