
chakra ui v2の Button
を SaveButton
としてコンポーネント化する際に、Button
自体のpropsもコンポーネント呼び出し先から指定できるようにしたかったので方法を調べた結果を共有します。
-
Button
のprops型であるButtonProps
をカスタムの型と&する - propsの分割代入先に
...rest
としてカスタムのprops以外をまとめて受け取れるようにする
SaveButton.tsx
/* eslint-disable @typescript-eslint/no-explicit-any */
import { Button, ButtonProps } from "@chakra-ui/react";
import React, { FC } from "react";
type Props = {
text: string;
onClick: () => void;
iconType?:
| React.ReactElementunknown, string | React.JSXElementConstructorany>>
| undefined;
};
export const SaveButton: FCProps & ButtonProps> = (props) => {
const { text, onClick, iconType, ...rest } = props;
return (
Button colorScheme="blue" rightIcon={iconType} onClick={onClick} {...rest}>
{text}
Button>
);
};
Button
の元々のpropsである type="submit"
を指定できるようになりました!
SaveButton text="登録" onClick={onClickSaveTodo} type="submit" />
その他のpropsも、もちろん指定できます。
今までは、元々のprops指定できなくない!?と思ってたけど、これで気兼ねなくコンポーネント化できる。
Views: 0