2つのモデルStateとCityを別々のファイルに作成しました。州の都市をインポートします。
Stateはその中にCitiesの配列を持つことができます。
以下のコードは正常に動作します。
State.js
_let State = PropTypes.shape({
name: React.PropTypes.string,
cities: PropTypes.arrayOf(PropTypes.shape(City))
});
_
City.js
_let City = PropTypes.shape({
name: React.PropTypes.string,
population: PropTypes.number
});
_
ただし、cities
を次のように書き換えると
_let State = PropTypes.shape({
name: React.PropTypes.string,
cities: PropTypes.arrayOf(City)
});
_
それは私に警告を与えます。
概要:
cities: PropTypes.arrayOf(PropTypes.shape(City))
は機能します。
cities: PropTypes.arrayOf(City)
はサポートしていません。
それは私に次の警告を与えます:
_Warning: Failed propType: Property xx of component Xx has invalid PropType notation inside arrayOf. Check the render method of Yy.
_
私の質問は、City
は_Proptypes.shape
_ですが、なぜ_Proptypes.arrayOf
_でProptypes.shape(City)
に再び言及する必要があるのですか?
あなたのコードで:
let City = PropTypes.shape({
name: React.PropTypes.string,
population: PropTypes.number
});
どのバージョンのReactを使用していますか?React.PropTypesおよびPropTypesからPropTypesを参照しています。PropTypesをどのようにインポートしていますか?prop-typesパッケージを使用していますか?
私は同様のシナリオを使用していますが、それは私にとってはうまくいきます。あなたのレンダリングはどのように見え、小道具に提供されるデータは何ですか?
私にとっては、次のことが完全に機能します:
cities: PropTypes.arrayOf(City)
私は同じ問題を抱えていますが、私の場合、1つのファイルが他のファイルの前にロードされたことが原因でした。
あなたの場合、City.js
をロードするときにState.js
がまだロードされていないことが原因である可能性があります