私は fullText
という名前の状態変数を定義しました。
fullText
デフォルト値は false
です。
全文がクリックされたときに、状態値を反転してテキストを閉じたり開いたりできるようにしたいと考えています。しかし、クリックするとテーブル内のすべての行のテキストが開きます。行固有にするにはどうすればよいでしょうか?
{ !this.state.fullText ? <div onClick={() => this.setState({ fullText: !this.state.fullText })} className="テキスト-プライマリ カーソル-ポインター font-size-14 mt-2 px-2" key={props.data?.id}> 全文 </div> : <> <div onClick={() => this.setState({ fullText: !this.state.fullText })}className="テキスト-プライマリ カーソル-ポインター フォント-サイズ-14 mt-2 px-2" key={props.data?.id}> 短いテキスト </div> <span>{ props.data?.caption}</span> </> }
質問のコード例は行ごとに繰り返されているようですが、すべてに共通する状態は
fullText
(CodeSandbox のshowMore
) の 1 つだけです。したがって、それらはすべて同時にオンまたはオフになります。各行に個別の開閉機能を持たせたい場合は、行ごとにそのような状態が 1 つ必要です。簡単な解決策は、このステータスを各行のデータに埋め込むことです: