【发布时间】:2022-11-19 02:47:24
【问题描述】:
注意:我已经尝试了十几个例子。有些我确实在这里找到了。没有为我工作。
我确实让 React 中的链接可以正常工作,但它们会向页面添加一个组件,而不是替换它。
我知道要解决这个问题,我需要在 BrowserRouter 中包装应用程序,但我尝试的每一种方式都会使整个网站呈现空白。
因此,在下面的 <Provider store={store}><App /></Provider> 中,如果我尝试将 <BrowserRouter> 标签放在 <Provider> 标签的外部或内部,网站将呈现空白。我缺少什么?
这是我的 index.js:
import React from "react";
import ReactDOM from "react-dom/client";
import "./index.scss";
import reportWebVitals from "./reportWebVitals";
import { store } from "./store";
import { Provider } from "react-redux";
//header, footer, theme
import App from "./App";
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
<Provider store={store}>
<App />
</Provider>
);
reportWebVitals();
我的 router.js:
// Routes.js
import React from "react";
import { BrowserRouter, Route, Routes, Link } from 'react-router-dom';
import Home from "./pages/home";
const Router = () => {
return (
<BrowserRouter>
<Routes>
<Route path='/' element={<Home />} />
</Routes>
</BrowserRouter>
);
};
export default Router;
还有我的 app.js:
import { useEffect } from "react";
// mui
import { Container } from "@mui/material";
import { ThemeProvider } from "@mui/system";
// theme
import theme from "./styles/theme";
// components
import Footer from "./components/footer";
import Appbar from "./components/appbar";
// styles
import "./App.css";
import About from "./pages/about";
/*import Events from './components/Events/Events';*/
import {Route, Routes } from 'react-router-dom';
import Router from "./router";
// components
import ListArticles from "./components/list-articles";
function App() {
useEffect(() => {
document.title = "Home";
}, []);
return (
<ThemeProvider theme={theme}>
<Container
disableGutters
maxWidth="xl"
sx={{
background: "#fff",
}}
>
<Appbar />
<Footer />
</Container>
<Router />
</ThemeProvider>
);
}
export default App;
【问题讨论】:
-
Router组件正在呈现BrowserRouter,它包装了一个Routes组件,后者呈现单个Route呈现一个Home组件。Router呈现在Container中的Appbar和Footer下方。您还尝试渲染哪些其他路线?你想链接到什么?在哪里呈现任何链接?目前还不清楚是什么问题。
标签: reactjs react-router