[#PrivateRoute,#React-RouterV 6#ネストChildrentype,#有効なSX Element,#<>...]「React-Typescript」の実装中に発生したエラーと解決方法


どの機能を作成しようとしたときにエラーが発生しましたか?


RouterV 6を使用してPrivate Router機能を作成すると発生します。


RouterV 6を使用してルータ機能を実装する場合は、「123123.」リンクを参照してください。


何の特性の間違いですか?


Privateコンポーネントは、ルータをプライベートルータにカプセル化するためのパッケージコンポーネントです。ネストされたサブタイプが専用構成部品で正しく定義されていないため、エラーが発生しました。


エラーはどこで発生しましたか?


ルータコンポーネントで発生


専用構成部品をルータ構成部品にインポートした後、既存のルータを迂回してみます。



エラーメッセージは何ですか?


「PrivateRoute」はJSXコンポーネントとして使用できません.
フォーマット「Element|{children:ReactNode;}」を返します.有効なJSX要素ではありません.
'{ children: ReactNode; }' フォーマットには、「ReactElement

以前はどんなコードを書いてエラーを起こしましたか?


PrivateRoute.tsx

function PrivateRoute({ children }: { children: React.ReactNode }) {
  let location = useLocation();
  const { user } = useContext(UserContext);
  return user ? (
    { children }
  ) : (
    <Navigate to="/login" state={{ from: location }} />
  );
}

Router.tsx


Router.tsxでPrivateRouteにエラーが発生しました

<Route
  path="/register"
  element={
    <PrivateRoute>
      <Register />
    </PrivateRoute>
          }
/>

コードをどのように変更してエラーが消えたのですか?

function PrivateRoute({ children }: { children: React.ReactNode }) {
  let location = useLocation();
  const { user } = useContext(UserContext);
  return user ? (
     <>{children}</>
  ) : (
   <Navigate to="/login" state={{ from: location }} />
      );
}
キー・コードのセクションは次のとおりです.
<>{children}</>

なぜ上のコードのように変更したのですか?


関連エラーを検索すると、stackoverflowの「ここです。」リンクからプロンプトが表示されます.
エラーメッセージでは、「JSXコンポーネントとして使用できない」と「無効な戻りフォーマット」に気づきました.

現在受信しているサブアイテムを返す場合、サブアイテムのフォーマットが無効であると判断します

childrenに値を入力したが,このchildrenが有効なelmentとして使用できないためであると推測した.


以上のリンクから以下の回答が得られました(私の場合とは違いますが、、、)
You need to return a JSX Element, not an array. Wrapping the whole component is a solution, but you need to do it outside of the map/filter function.
私が書いた子供は正しいJSX ELEMENTではありません.
RECT FRAGMENTとして、私は空のコードを子供たちに包んだ.
<>……childrenをJSX ELEMENTと認識させる包みました
<>{children}</>

リファレンスリンク


: https://tunapanini.github.io/[React]%20JSX%20element%20type%20'Component'%20does%20not%20have%20any%20construct%20or%20call%20signatures.%20[2604]/
: https://www.codingdeft.com/posts/react-router-tutorial/