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?

型 '{ children: Element; }' には型 'IntrinsicAttributes' と共通のプロパティがありません。 / Type '{ children: Element; }' has no properties in common with type 'IntrinsicAttributes'

Last updated at Posted at 2024-04-03

はじめに

react-router-domPrivate実装時等に、以下のエラーが起きた場合の対処について

スクリーンショット 2022-04-25 17.59.00.png

日本語 : 型 '{ children: Element; }' には型 'IntrinsicAttributes' と共通のプロパティがありません。
英語 : Type '{ children: Element; }' has no properties in common with type 'IntrinsicAttributes'

結論

propを受け取らないコンポーネントに対し、上の画像のように<Route path='/' element={<Home/>}/>というchildrenを渡そうとすると発生する様子。
よって下記のように修正した。


<Private>
  <Route path="/" element={<Home />} />
</Private>
// ↓変更
<Route path='/' element={<Private />}>
  <Route path='/' element={<Home/>}/>
</Route>
const Private = () => {
  if (isSignedIn) {
    // return children
    // ↓変更
    return <Outlet />
  } else {
    return <Navigate to="/signin" />
  }
}

親コンポーネント内で<Outlet />を記述することで、実際にはchildren要素が呼び出される。

詳細

今回のは、react-router-domのv5からv6にアップデートする際に直面した問題でした。
ちなみに、v6ではSwitchの代わりにRoutesを使用します。

おわりに

なんとなくreact-router-domは把握できているつもりであったが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?