9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

hooks使いたくて React のバージョン上げたものの useState の 関数が動かなかったり useEffect がエラー出したりする人は react-hot-loader のバージョンを上げると動くかも

Last updated at Posted at 2019-02-07

バージョン追随ちゃんとやっていないことがバレバレな記事だが同じアナにハマっている方もいらっしゃるかもしれないので共有。

先日React hooksが stable になった v16.8 がリリースされたが、ウキウキでバージョン上げて開発サーバを立ち上げたところ次のような症状が出た。

  • useState の set関数が動かない
// 例: これの setCount が実行されてもエラーを出力することもなく、ただただ count が変わらない
const [count, setCount] = useState(0)
  • useEffectが Cannot read property 'expirationTime' of undefined というエラーを出して死ぬ
  • hooks使っているFunctionコンポーネントを classコンポーネントの中で使うと Hooks can only be called inside the body of a function component と怒られて死ぬ

原因としては react-hot-loader のバージョンが低いことだった。
READMEに書いてある通り v4.6.0 以上では特に何も設定せずとも hooks が動くみたい。

[React Hooks] Incompatibility with react-hot-loader
https://github.com/gaearon/react-hot-loader#react-hooks

それ未満の場合は次のような設定を加える必要があるそうです。

setConfig({ pureSFC: true });
9
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?