おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

【React】カスタムフックを用いてロジックを切り離してみる!

はじめに

カスタムフックを用いてHooksを複数用いている処理を別途切り離してみたので備忘録として残します。

カスタムフックとは

以下2つの記事がとても分かりやすかったです。

独自フックの作成 – React

【React】カスタムフックと本気で向き合ってみた - Qiita

サンプルコード

●カスタムフック側

export const useData =() => {
    const [loading, setLoading] = useState(false);
    const [data, setData] = useState<Array<Data>>();

    const getData = useCallback(() => {
        setLoading(true);
        axios
            .get<Array<Data>>(`${commonData.baseUrl}/api/data`)
            .then((response) => setData(response.data))
            .catch((response) => {console.log(response)})
            .finally(() => setLoading(false))
    },[data]);
    return { getData, loading, data, setData }
}

●呼び出し側

import { useData } from 'useData'

export const Index: FC = memo(() => {
    const { getData, loading, data, setData } = useData();
    useEffect(() => getData(), []);
    // 以降で取得したDataを利用
})

おわりに

複数のStateを用いている場合に処理をまとめたり、ViewとLogicがごちゃごちゃになるのを防げたりするので結構便利です。
引き続き使っていこうと思います!