私はこの特定のコードを持っており、それぞれの質問とボタンのリストを示しています。ボタンをクリックすると、質問に対する特定の回答が表示されます。私の問題は、私はたくさんの質問があります。ボタンをクリックすると、その質問に対する特定の回答ではなく、すべての回答が表示されます。ここで特定の要素に表示/非表示を切り替えます
はコード
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'状態のコンポーネントを作成し、そのデータをマップしてインスタンスを作成することをお勧めします。 –