App.js

import Projects from "./pages/Projects"
import Experience from "./pages/Experience"
import About from "./pages/About"

import TopScroll from './TopScroll.js'

import Pilly from "./pages/ProjectFolder/Pilly"
import StegHide from "./pages/ProjectFolder/StegHide"

import { 
  BrowserRouter as Router, 
  Route, 
  Routes, 
  Link, 
  Redirect,
} from "react-router-dom"

function App() {
  return (
    <Router>
      <TopScroll>
      <Routes>

        {/* main pages */}
        <Route exact path="/">
          <Projects />
        </Route>

        <Route exact path="/experience">
          <Experience />
        </Route>

        <Route exact path="/about">
          <About />
        </Route>

        {/* project pages */}
        <Route exact path="/pilly">
          <Pilly />
        </Route>
        <Route exact path="/steghide">
          <StegHide />
        </Route>
        
      </Routes>
      </TopScroll>
    </Router>
  );
}

export default App;

TopScroll.js

import React, { useEffect, Fragment } from 'react';
import { withRouter } from 'react-router-dom';

function TopScroll({ history, children }) {
  useEffect(() => {
    const unlisten = history.listen(() => {
      window.scrollTo(0, 0);
    });
    return () => {
      unlisten();
    }
  }, []);

  return <Fragment>{children}</Fragment>;
}

export default withRouter(TopScroll);

我有以下版本的依赖项: Reaction→^18.2.0 react 域→^18.2.0 REACT-ROUTER-DOM→^6.21.1

您能告诉我为什么我收到以下错误:Error in./src/TopScroll.js 31:21-31 在"Reaction-Router-Dom"中找不到导出""with Router""(作为""with Router""导入)?"

推荐答案

已解释问题

正如Derek提到的,withRouter不再位于REACT-ROUTER-DOM库中

溶液

你可以read details about it and see examples here.

这是他们的示例中的一个片段,其中说明您只需要一个包装器:

import {
  useLocation,
  useNavigate,
  useParams,
} from "react-router-dom";

function withRouter(Component) {
  function ComponentWithRouterProp(props) {
    let location = useLocation();
    let navigate = useNavigate();
    let params = useParams();
    return (
      <Component
        {...props}
        router={{ location, navigate, params }}
      />
    );
  }

  return ComponentWithRouterProp;
}

https://reactrouter.com/en/main/start/faq#what-happened-to-withrouter-i-need-it

Reactjs相关问答推荐

使用useEffect挂钩获取数据

在react.js的条形图中获取错误&unfined是不可迭代的

无法从正在使用Reaction的Electron 商务store 项目中的购物车中删除项目

如何在整个应用程序中显示通用弹出窗口中的点击事件

根据处于react 状态的数组的名称键,将新对象添加到嵌套的对象数组中

为什么我的react 简单计时器项目不起作用?

获取类别和页面的参数

在 React 中是否有任何理由要记住 Redux 操作创建者?

Chart.js如何go 除边框

当从子状态更改复制时,react 父状态更改.我该如何防止这种情况?

React 状态不更新

try 从 React JS 构建此教程游戏但无法继续前进

如何读取 null 的属性?

在 React JS 中编辑表格数据

表单错误后 Ionic React 无法 Select 单选按钮

Redux,状态未定义

错误:无效挂钩调用.钩子只能在函数组件的主体内部调用.使用 next/router 时

如何在 React 中单击鼠标的位置动态添加 div?

如何在 React 中的 Material Ui 多选中设置默认值?

当页面重新加载react 路由导航到第一页 v6