ReactHooksのすごさを理解した話
ReactHooks凄い!ヤバイ!パラダイムシフト!という話はよく聞いていたけれども、正直あまりその価値を理解してなかった。 が、自分で使ってみてその価値を理解した。ReactHooks凄いよ。特にカスタムHooksはReactの世界観変えるパワー持ってるよ!(今更)
実例
端的に言うと、こんな感じコンポーネントが
import React, { useEffect, useState } from 'react' ... import fetchJsonp from 'fetch-jsonp' const Result: React.FC = () => { interface IInfo { ... } const initialNovelInfo = {XXXX} const [info, setInfo] = useState<IInfo>(initialInfo) useEffect(() => { const url = 'https://XXXXXXX' fetchJsonp(url).then(response => { return response.json() }).then(response => { const info = response[1] setInfo({ ... }) }) }, []) const infoProps = { title: info.title, writer: info.writer, story: info.story } return ( <div className="result"> <Info {...infoProps} /> <ResultContent /> </div> ) } export default Result
こんな感じに変わる
import React from 'react' ... const Result: React.FC = () => { const InfoProps = useInfo() return ( <div className="result"> <Info {...lInfoProps} /> <ResultContent /> </div> ) } export default Result
JSX返す箇所以外のコードが、ごそっとuseInfo()=カスタムHooksに置き換わった感じ。 (もちろんuseInfoの中身は別途作成が必要)
見た目とロジックを綺麗に分けることができる。自由度高すぎて正直感動した。
懸念
ただ自由度の高さが仇となって個々人のセンスが試される場面が多そうな感じもある。 上の実装もこれでいいのか少し悩んだ。
そんな時にオススメなのが他の人のHooks実装を見てみること。 例えば以下は参考になりそうなHooksが多くまとめられている様子でオススメ。
React Custom Hooksのサンプル集 - Qiita
後者のチュートリアルとして紹介されていた、
Making Sense of React Hooks - Dan Abramov - Medium
が自分の実装と似ていた。Dan Abramov先生が言うならOKだろ!
Hooksは1つ1つの実装規模は小さめでコードリーディングのハードルも低い。そこも良いポイントだなー。