React コンポーネントをレンダリングするときは、隣接する JSX 要素を囲む必要があるというルールに従うことが重要です親タグ内。このエラーは、要素が共通の親によってラップされずに並んで存在する場合に発生します。
提供されたコードには、次の条件に基づいて 2 つの div 要素を条件付きでレンダリングする if ステートメントが含まれています。 this.state.submitted 変数の値。ただし、これらの要素は隣接しており、親タグで囲まれていません。
このエラーを解決するには、条件付きでレンダリングされた要素を囲むタグ内でラップします。これにより、JSX 構造が有効であることが確認されます。たとえば、コードを次のように変更できます。
<code class="javascript">render: function() { var text = this.state.submitted ? 'Thank you! Expect a follow up at '+email+' soon!' : 'Enter your email to request early access:'; var style = this.state.submitted ? {"backgroundColor": "rgba(26, 188, 156, 0.4)"} : {}; return ( <div> {this.state.submitted == false && ( <> <input type="email" className="input_field" onChange={this._updateInputValue} ref="email" value={this.state.email} /> <ReactCSSTransitionGroup transitionName="example" transitionAppear={true}> <div className="button-row"> <a href="#" className="button" onClick={this.saveAndContinue}>Request Invite</a> </div> </ReactCSSTransitionGroup> </> )} </div> ) },</code>
この変更されたコードでは、条件付きでレンダリングされる要素を囲む
追加の div タグを使用する代わりに、Fragments API を使用できます。 。これにより、DOM に追加のノードを追加せずに要素をグループ化できます。次のコードは、フラグメントの使用方法を示しています。
<code class="javascript">render: function() { var text = this.state.submitted ? 'Thank you! Expect a follow up at '+email+' soon!' : 'Enter your email to request early access:'; var style = this.state.submitted ? {"backgroundColor": "rgba(26, 188, 156, 0.4)"} : {}; return ( <div> {this.state.submitted == false && ( <> <input type="email" className="input_field" onChange={this._updateInputValue} ref="email" value={this.state.email} /> <ReactCSSTransitionGroup transitionName="example" transitionAppear={true}> <div className="button-row"> <a href="#" className="button" onClick={this.saveAndContinue}>Request Invite</a> </div> </ReactCSSTransitionGroup> </> )} </div> ) },</code>
このコードでは、 以上がReact で「解析エラー: 隣接する JSX 要素は囲みタグでラップする必要があります」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。