質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SPA(Single-page Application)

SPA(Single-page Application)は、単一のWebページのみでコンテンツの切り替えができるWebアプリケーションもしくはWebサイトです。ブラウザでのページ遷移がないため、デスクトップアプリケーションのようなUXを提供します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1535閲覧

JSX(React)でコンポーネントの配列をpropsとして渡し、子コンポーネントでさらにpropsを追加して表示する方法

tanana_m

総合スコア28

SPA(Single-page Application)

SPA(Single-page Application)は、単一のWebページのみでコンテンツの切り替えができるWebアプリケーションもしくはWebサイトです。ブラウザでのページ遷移がないため、デスクトップアプリケーションのようなUXを提供します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/06/04 07:05

#知りたいこと
Reactでコンポーネントの配列をpropsとして子に渡し、子でさらにpropsを追加して表示することはできるのでしょうか。

以下のコードはやりたいことのイメージです。
あくまでイメージを表現したものであり、実際に実行しようとすると構文エラーとなり実行できません。

tsx

1 2import React, { FC, useState } from 'react'; 3 4const Component1: FC<{ className?: string; text: string }> = ({ 5 className, 6}) => { 7 return <div className={className}>コンポーネント1</div>; 8}; 9const Component2: FC<{ className?: string }> = ({ className }) => { 10 return <div className={className}>コンポーネント2</div>; 11}; 12const Component3: FC<{ className?: string }> = ({ className }) => { 13 return <div className={className}>コンポーネント3</div>; 14}; 15 16const Parent: FC = () => { 17 return ( 18 <> 19 {/* 表示したいコンポーネントをpropsとして配列で渡す この時点でpropsを渡してもOK */} 20 <Child 21 components={[ 22 <Component1 text="test" />, 23 <Component2 />, 24 <Component3 />, 25 ]} 26 /> 27 </> 28 ); 29}; 30 31type Props = { 32 components: FC[]; 33}; 34 35/** 36 * コンポーネントの配列をPropsで受け取り表示するコンポーネント 37 */ 38const Child: FC<Props> = ({ components }) => { 39 const [viewComponentNumber, setViewComponentNumber] = useState(0); 40 41 const GetComponent = components[viewComponentNumber]; 42 43 return ( 44 <> 45 <button type="button" onClick={() => setViewComponentNumber(0)}> 46 view1 47 </button> 48 <button type="button" onClick={() => setViewComponentNumber(1)}> 49 view2 50 </button> 51 <button type="button" onClick={() => setViewComponentNumber(2)}> 52 view3 53 </button> 54 55 {/* 表示するときにさらにpropsを追加できる */} 56 <GetComponent className={`class-${viewComponentNumber}`} /> 57 </> 58 ); 59}; 60 61export default Parent; 62

ご教示宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Reactでコンポーネントの配列をpropsとして子に渡し、子でさらにpropsを追加して表示することはできるのでしょうか。

例えば以下のような方法でできるのはできますが、そのような実装が必要なケースが特に思いつかないですね。
可読性が下がる一方だと思われますので、可能であれば実装方法よりもコンポーネント設計の見直しを先に注力した方が良いかなと思います。

tsx

1 <Child 2 components={[ 3 ({className}) => <Component1 text="test" className={className} />, 4 ({className}) => <Component2 className={className} />, 5 ({className}) => <Component3 className={className} />, 6 ]} 7 />

投稿2021/06/04 08:31

nabenabe11234

総合スコア126

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanana_m

2021/06/10 01:43

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問