用 react hook 切分商業邏輯
https://felixgerschau.com/react-hooks-separation-of-concerns/