私はReact(15.5.4)コンポーネントに多くの子要素があり、そのうちのいくつかはHTML要素であり、いくつかは他のReactコンポーネントです。ReactJS - React.Children.forEach - 子コンポーネント名を取得できますか?
私はサーバーレンダリングを使用しており、サーバーとクライアントで同じ動作が必要です。クライアントはReactの実動ビルドを使用します。
私は子供を反復し、特定の種類のReactコンポーネントを特定する必要があります。だから私の最初の考えはReact.Children.forEach()
を使って繰り返し、コンポーネント名を探すことでした。
React.Children.forEach(this.props.children, child => {
console.log('name =', child.name)
})
child.name
とchild.displayName
が存在しないようです。
child.type
が存在し、"ul"
のような文字列(Reactコンポーネント用)のいずれかです(HTML要素の場合)。
関数の場合、const type = get(child, 'type.name', '')
のようにlodash/get
を使用してコンポーネント名を取得できます。 しかし、これはサーバー側でのみ動作し、クライアント側のプロダクションビルドでは動作しません。文字列:"t"
が返されます。開発ビルドは関数のコンポーネント名を使用するように見えますが、プロダクションビルドではt()
という名前に変更されています。だから私はchild.type.name
を使用することはできません。コンポーネントの子の上に
- 反復とコンポーネントの特定のタイプを識別する..:
はどのようにしていますか?
- 開発と生産の両方で機能するReactビルド..?
ありがとうございます!私はすでにコンポーネントに設定されているものを探していましたが、 'FirstChild.displayName = 'FirstChild''を使って自分の静的プロパティを設定するのは非常にうまくいきます。 –
回答upvoted ... :-) –
ありがとう!喜んで助けてください。 – juliobetta