reactjs - 在react-router-dom v6中使用<Routes>,<Route>和<Navigate>的问题

标签 reactjs react-router-dom

我对react-router-dom v6的用法变化感到非常困惑。根据他们的文档,我们可以简单地将 Route 组件传递到 element 属性中,但我收到此错误

Uncaught TypeError: meta.relativePath.startsWith is not a function

我找不到任何解决方案。

import React from 'react';
import { Routes, Route, Navigate } from "react-router-dom";
import { Results } from './Results';

export const Catogories = () => {
    return (
        <div className='p-4'>
            <Routes>
                <Route exact path='/' element={<Navigate to='/search' />} />
                <Route exact path={["/search", '/images,', '/news', '/videos']} element={<Results />} />
            </Routes>
        </div>
    );
};

最佳答案

react-router-dom v6 中,path 属性只能是字符串,不再使用数组,因此您必须为每个显式渲染路由。

Routes and Route

declare function Route(
  props: RouteProps
): React.ReactElement | null;

interface RouteProps {
  caseSensitive?: boolean;
  children?: React.ReactNode;
  element?: React.ReactElement | null;
  index?: boolean;
  path?: string; // <-- string type only, no string[]
}
<Routes>
  <Route path='/' element={<Navigate to='/search' replace />} />
  <Route path='/search' element={<Results />} />
  <Route path='/images' element={<Results />} />
  <Route path='/news' element={<Results />} />
  <Route path='/videos' element={<Results />} />
</Routes>

关于reactjs - 在react-router-dom v6中使用<Routes>,<Route>和<Navigate>的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70901768/

相关文章:

reactjs - 在 react-router-dom 中测试 PrivateRoute

reactjs - 如何将焦点设置到 antd Input.Password 组件?

javascript - 如何停止在 textInput React Native 中输入空格?

javascript - -React Native,从A.js到B.js传递状态数据的方式是什么

reactjs - 与 Gatsby react 路由器

React Router DOM 的 Typescript 错误

javascript - React-router-dom如何更新路由组件内的父状态

javascript - 在 Linux 16.04 中使用 create-react-app 创建应用程序失败

reactjs - Gatsby 与 CDN 引用

javascript - 预期有一个赋值或函数调用,但在 React 中看到了表达式 no-unused-expressions 错误