関数コンポーネントを利用して要素を追加する
from denoとTypeScriptでReactを使いたい
Reactを使ってDOM要素を追加するでは値を直接渡してDOM要素を追加したが、関数を介して追加することもできる
この関数のことを関数コンポーネントという
基本
code:TypeScriptReact(tsx)
function Test(): JSX.Element {
return <div className="foo"></div>;
}
const root = createRoot(document.body);
root.render(<Test />);
Testという名前の関数を用意する
戻り値の型はJSX.Elementと書く
頭の文字は大文字にしないとエラーを吐くので注意
よく分からないReactエラーメッセージ (メモ) - Qiita
<関数名 />でTest関数の戻り値を使うことができる
これによりbody直下に<div class="foo"></div>が追加される
値を受け取れるようにする
code:TypeScriptReact(tsx)
function Test2(props: {text: string}): JSX.Element {
return <button>{props.text}</button>;
}
const root = createRoot(document.body);
root.render(<Test2 text="aaa" />);
Test2関数にpropsという引数を追加した
propsを介してtextという値を渡すことにより、ボタンに表示する文字列を自由に設定できるようになっている
上記のソースコードではpropsの型を直接指定しているが、普通は予め定義しておいたものを使う
code:props.tsx
interface test2Props {
text: string
}
function Test2(props: test2Props): JSX.Element {
// 省略
}
<Test2 text="aaa" />のような形で値を渡すことができる
関数内ではprops.textと書くことで受け取ることができる
参考
コンポーネントと props – React