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

github.com

後者のチュートリアルとして紹介されていた、

Making Sense of React Hooks - Dan Abramov - Medium

が自分の実装と似ていた。Dan Abramov先生が言うならOKだろ!

Hooksは1つ1つの実装規模は小さめでコードリーディングのハードルも低い。そこも良いポイントだなー。