#知りたいこと
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
ご教示宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/10 01:43