https://lishoulong.github.io/posts/2017-06-03-react-custom-use-specification/