0
0

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 1 year has passed since last update.

react-router v6でreact hot loaderとの相性が悪い件

Last updated at Posted at 2022-02-11

問題発生

react-routerを使おうとすると下記のエラーが発生した。

Uncaught Error: [ProxyFacade] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>

<意訳>
ProxyFacadeはRouteコンポーネントではありません。すべてのRoutesの子コンポーネントはRouteコンポーネントである必要があります。

原因

StackOverflowの情報によるとreact-hot-loaderがすべてのエレメントをProxyFacadeでラッピングするため、react-routerがRoutesコンポーネントの子要素としてRouteコンポーネントがないと認識してしまうようだ。

対処方法

ソースコードの修正をリアルタイムに反映するためにreact-hot-loaderを使っていたが、react-router v6と相性が悪くて断念。
v6の方がルーティングを簡略化してかけたりして便利なんだけど、今回はv6でなくv5を使うことにした。
巷のreact-routerの情報もv5のものが多いのでv6は時期尚早かもしれない。

yarnを使ってv5をインストールする方法は下記の通り。

yarn add react-router@v5
yarn add react-router-dom@v5

おまけ

react-routerとreact-router-domの違いはこの記事が分かりやすかったです。

v5とv6のルーティングの書き方の違いはこのページが詳しかったです。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?