ReactのsetStateの内部コードフローを理解するために、例を試してみました。
ReactCompositeComponentWrapperオブジェクトが_instanceオブジェクトが_ReactInternalInstanceと同じ(スクリーンショットのコンソール)ReactCompositeComponentWrapperオブジェクトを参照していることに気付きました。 それは予想される構造ですか?
はい、それは意図的に二重にリンクされた構造です。 ReactCompositeComponentWrapper
は内部のみであり、ユーザー定義の複合コンポーネントをラップします。 マウント時に定義されるユーザー定義コンポーネントのインスタンスへの参照を保持します。 次に、 ReactInstanceMap
を使用して、パブリックインスタンスの内部ラッパーへの参照を格納します。
ReactInstanceMap
を見ると、ドキュメントのコメントにいくつかの詳細情報があります
ReactInstanceMap
は、パブリックに面したステートフルインスタンス(キー)と内部表現(値)からのマッピングを維持します。 これにより、パブリックメソッドは、ユーザー向けのインスタンスを引数として受け入れ、それらを内部メソッドにマップし直すことができます。
(これらは非公開の実装の詳細であり、将来のバージョンで変更されることに注意してください。)
説明をありがとう、それは本当に役に立ちました
最も参考になるコメント
(これらは非公開の実装の詳細であり、将来のバージョンで変更されることに注意してください。)