<aside> 💡
チャプター完了時点のソースコード
https://github.com/craftgear/react-hands-on/tree/ch2
</aside>
Viteアイコンをコンポーネントにする
const ViteIcon = () => {
return (
<a href="<https://vitejs.dev>" target="_blank">
<img src={viteLogo} className="logo" alt="Vite logo" />
</a>
);
};
Viteアイコンコンポーネントを別ファイルにする
Viteアイコンに <div>アイコン**を**クリックするとViteのサイトを開きます</div>
というタグを追加する
<div>アイコンをクリックするとReactのサイトを開きます</div>
というタグを追加するcomponents
ディレクトリを作成し、ViteIcon.tsx
と ReactIcon.tsx
をその中に移す
「こんにちは」と出力する Greeting
コンポーネントを作る
export const Greeting = () => {
return <h1>こんにちは</h1>
}
<Greeting name="React" />
で名前を受け取り、「こんにちは React」と出力するように変更する
type Props = {
name: string;
};
export const Greeting = (props: Props) => {
return <h1>こんにちは {props.name}</h1>
}
<Greeting />
コンポーネントのタグを開き、子要素を追加する
import { PropsWithChildren } from 'react';
type Props = {
name: string;
};
export const Greeting = (props: PropsWithChildren<Props>) => {
return (
<>
<h1>こんにちは {props.name}</h1>
{props.children}
</>
);
};
名前の配列を元に複数のコンポーネントを作成する
export const Greeting = ({ names, children }: PropsWithChildren<Props>) => {
return (
<>
{names.map((name) => (
<h1 key={name}>こんにちは {name}</h1>
))}
{children}
</>
);
};