ジェネリックコンポーネントとforwardRef
ジェネリクスを使って再利用可能な型付きコンポーネントを構築します。
「ジェネリックコンポーネントとforwardRef」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。
ようこそ
コンポーネントPropsのインターフェース
interface ButtonProps {
label: string;
onClick: () => void;
disabled?: boolean;
}
function Button({ label, onClick, disabled }: ButtonProps) {
return <button onClick={onClick} disabled={disabled}>{label}</button>;
}FCと明示的な戻り値の型
const Card: React.FC<{title: string}> = ({ title }) => <div>{title}</div>;
// Or explicit:
function Card2({ title }: { title: string }): JSX.Element {
return <div>{title}</div>;
}useStateに型を付ける
const [count, setCount] = useState(0); // number
const [name, setName] = useState(''); // string
const [user, setUser] = useState<User | null>(null); // explicituseReducerに型を付ける
type Action = { type: 'increment' } | { type: 'decrement' } | { type: 'reset'; value: number };
function reducer(state: number, action: Action): number {
switch (action.type) {
case 'increment': return state + 1;
case 'decrement': return state - 1;
case 'reset': return action.value;
}
}DOM用useRefに型を付ける
const inputRef = useRef<HTMLInputElement>(null);
// Use:
if (inputRef.current) {
inputRef.current.focus();
}イベントハンドラーに型を付ける
function handleChange(e: React.ChangeEvent<HTMLInputElement>) {
console.log(e.target.value);
}
function handleClick(e: React.MouseEvent<HTMLButtonElement>) {
e.preventDefault();
}ジェネリックコンポーネント
function List<T extends { id: number }>({ items }: { items: T[] }) {
return <ul>{items.map(i => <li key={i.id}>{JSON.stringify(i)}</li>)}</ul>;
}TypeScriptでforwardRefを使う
const Input = React.forwardRef<HTMLInputElement, InputProps>(
({ label, ...props }, ref) => (
<label>{label}<input {...props} ref={ref} /></label>
)
);カスタムフックの戻り値の型
function useToggle(init: boolean): [boolean, () => void] {
const [state, setState] = useState(init);
return [state, () => setState(s => !s)];
}TypeScriptでContextを使う
const AuthContext = React.createContext<User | undefined>(undefined);
function useAuth(): User {
const ctx = useContext(AuthContext);
if (!ctx) throw new Error('useAuth must be used within AuthProvider');
return ctx;
}クイックチェック
まとめ
よくある質問
「ジェネリックコンポーネントとforwardRef」レッスンは無料ですか?
はい。「ジェネリックコンポーネントとforwardRef」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。
「ジェネリックコンポーネントとforwardRef」で何を学びますか?
ジェネリクスを使って再利用可能な型付きコンポーネントを構築します。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
TypeScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「ジェネリックコンポーネントとforwardRef」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTypeScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ReactコンポーネントのPropsに型を付ける
- useStateとuseReducerに型を付ける
- useRefとイベントハンドラーに型を付ける
- ジェネリックコンポーネントとforwardRef