ホームページ  >  に質問  >  本文

useState を使用せずにクラスベースのコンポーネントの React ページを更新します。

<p>React のクラスベースのコンポーネントを使用して、最初にすべてのトークンを表示します。次に、順序に関係なく、spanid を含む 2 つのテキストを同時に表示したいと思います。前へおよび次へのボタンを使用してページを再レンダリングします。ページを再レンダリングする可能性は n*(n-1) 通りあります。これは、spanid を持つ最初のテキストが、別の spaid を持つ 2 番目のテキストと、spanid を持つ n-1 番目のトークンまでペアになるためです。 spaid を持つ n 個のテキストの場合、前/次ボタンを使用してページを n*(n-1) 回再レンダリングできます。 React のクラスベースのコンポーネントを使用してコードを作成しているため、関数セットアップの場合のように useState と props を使用してこれを処理する方法がわかりません。この問題に関するご支援をいただければ幸いです。 </p> <pre class="brush:php;toolbar:false;">React を 'react' からインポートします。 './App.css' をインポートします。 定数レコード = [ { "tid": 1, "token_text": "Canis Familiaris", "spanid": 1, "label": "名前" }, { "tid": 2, "token_text": "は" }, { "tid": 3, "token_text": "the" }, { "tid": 4, "token_text": "学名", "spanid": 2, "label": "名前の種類" }, { "tid": 5, "token_text": "の" }, { "tid": 6, "token_text": "犬", "spanid": 3, "label": "種" }, { "tid": 7, "token_text": "." } ]; class Relation extends React.Component { const input_tokens = レコード; var cntr = 200; input_tokens.forEach(tk => { const スパン = tk['spanid']; if (!tk['spanid']) { tokens_to_render.push( <div key= {`id${cntr}`} > <div id = {`label${cntr}`} className='no-label' key={tk.tid}>--</div> <div key={cntr} id = {`span${cntr}`} Index={tk['spanid']} > {tk['token_text']} </div> </div> ); } それ以外 { tokens_to_render.push( <div キー = {`id${cntr}`} > <div id = {`label${cntr}`} className='label' key={tk.tid} >{tk['label']}</div>
{tk['token_text']} </div> </div> ); }; cntr = cntr 1; }); 戻る ( <div key="外側" > <div key="id" className="コントロールボックス"> {レンダリングするトークン} </div> </div> ) } } デフォルトの関係をエクスポート;</pre> <p><br /></p>
P粉739886290P粉739886290465日前623

全員に返信(1)返信します

  • P粉413307845

    P粉4133078452023-08-04 14:14:29

    翻訳: useState のようなフックは、関数コンポーネントでのみ使用できます。クラスコンポーネントで状態を使用するには:

    • render() メソッドから表示される JSX を返します。
    • 初期状態を state 属性に割り当てます。
    • this.setState を呼び出してステータスを更新します。 ############例えば:############ リーリー

      返事
      0
  • キャンセル返事