我有這個特殊的代碼,它顯示了每個問題和按鈕的列表。當我點擊按鈕時,它會顯示問題的具體答案。我的問題是,我有一堆問題,當我點擊按鈕時,它會顯示所有答案,而不是該問題的具體答案。切換顯示/隱藏到特定元素
下面是代碼
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」狀態,並映射這些數據以爲每個問題創建一個實例。 –