「インバリアント違反: 無効な反応子としてのオブジェクト」が発生するのはなぜですか?

Barbara Streisand
リリース: 2024-11-06 21:19:03
オリジナル
341 人が閲覧しました

Why Am I Getting

不変違反: 無効な React の子としてのオブジェクト

React でオブジェクトを次のようにレンダリングしようとすると、React の不変違反エラーが発生することがあります。 React の直接の子。指定されたコンポーネントでは、onClick ハンドラーにオブジェクト (イベント オブジェクト) がパラメーターとして渡されるときにエラーが発生します。

React は、子がプリミティブ値 (文字列、数値など)、または React のいずれかであることを期待します。要素、またはこれらの値の配列。オブジェクト、オブジェクトの配列、またはその他の複雑な構造は、有効な子として認識されません。

エラーを解決するには、イベント ハンドラー this.onItemClick.bind(this, item) をアロー関数でラップする必要があります。イベント オブジェクトがパラメータとして渡されないようにします。正しい実装は次のようになります。

{items.map((item) => (
  <li key={item} onClick={(e) => this.onItemClick(e, item)}>{item}</li>
))}
ログイン後にコピー

このエラーのもう 1 つの理由は、オブジェクトが意図せず文字列としてレンダリングされた場合である可能性があります。例:

breadcrumbElement = { ...someObject ... };

{breadcrumbElement} // Renders as an object, not a string
ログイン後にコピー

すべての子要素が文字列、要素、またはこれらの値の配列であることを確認してください。オブジェクトを表現する必要がある場合は、このエラーを回避するために、オブジェクトを文字列に変換するか、React.Fragment でラップしてください。

以上が「インバリアント違反: 無効な反応子としてのオブジェクト」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!