【发布时间】:2022-11-24 14:17:42
【问题描述】:
我在 React 上遇到错误: 无法匹配 URL“/”,因为它不是以基本名称开头的,因此不会呈现任何内容。
我的 App.js 文件是:
import React, { Component } from "react";
import PhotoContextProvider from "./context/PhotoContext";
import { HashRouter, Route, Routes, Navigate, } from "react-router-dom";
import Header from "./components/Header";
import Item from "./components/Item";
import Search from "./components/Search";
import NotFound from "./components/NotFound";
class App extends Component {
// Prevent page reload, clear input, set URL and push history on submit
handleSubmit = (e, history, searchInput) => {
e.preventDefault();
e.currentTarget.reset();
let url = `/search/${searchInput}`;
history.push(url);
};
render() {
return (
<PhotoContextProvider>
<HashRouter basename="/SnapScout">
<div className="container">
<Route
render={(props) => (
<Header
handleSubmit={this.handleSubmit}
history={props.history}
/>
)}
/>
<Routes>
<Route
exact
path="/"
render={() => <Navigate to="/mountain" />}
/>
<Route
path="/mountain"
render={() => <Item searchTerm="mountain" />}
/>
<Route path="/beach" render={() => <Item searchTerm="beach" />} />
<Route path="/bird" render={() => <Item searchTerm="bird" />} />
<Route path="/food" render={() => <Item searchTerm="food" />} />
<Route
path="/search/:searchInput"
render={(props) => (
<Search searchTerm={props.match.params.searchInput} />
)}
/>
<Route element={NotFound} />
</Routes>
</div>
</HashRouter>
</PhotoContextProvider>
);
}
}
export default App;
我试图改变但没有效果,仍然得到一个带有错误的平面白屏:无法匹配 URL“/”,因为它不是以基本名称开头,所以不会呈现任何内容。
【问题讨论】:
-
您尝试使用哪个版本的
react-router-dom?Routes和Navigate是react-router-dom@6导出,但您正在使用react-router-dom@5语法/API 渲染Route组件。在Routes组件之外还有一些Route组件。检查浏览器控制台,因为我确定您也有一些错误。通过在项目根目录的终端中运行npm list react-router-dom来检查安装的版本,并报告安装的内容。您是否正在从一个版本升级到另一个版本? -
我在 react-router-dom@6.4.3 上运行
标签: reactjs react-router