当前位置: 首页 > 知识库问答 >
问题:

如何在类组件中使用react-router-dom v6导航

屠君墨
2023-03-14

我安装了react-router-dom v6,我想使用一个基于类的组件,在之前版本的react-router-dom v5this.props.history()在做某事后适用于重定向页面,但此代码不适用于v6。

在react-router-dom v6中,函数组件有一个钩子useNavigate,但我需要在类基础组件中使用它,请帮助我如何在类组件中使用导航?

共有3个答案

鲜于勇
2023-03-14

在 react 类组件中使用

一个

方坚壁
2023-03-14

在类基组件中重定向用户按照此步骤操作:首先导入一些像这样的组件

import { Navigate } from "react-router-dom"

现在为返回布尔值设置一个状态,如下所示:

state = {
    redirect:false
}

现在将Naviagate组件插入到组件树的底部,但是使用

{ 
   this.state.redirect && <Navigate to='/some_route' replace={true}/>
}

现在,当您想将用户重定向到某个页面时,只需在您想要的一行代码上进行真正的重定向状态,现在您可以看到您导航到某个页面:)

闻梓
2023-03-14

在react router dom v6中,不推荐使用对历史的支持,但引入了导航。如果要在特定事件成功后将用户重定向到特定页面,请执行以下步骤:

创建一个名为 withRouter.js 的文件,并将下面给出的代码粘贴到此文件中:

import { useNavigate } from 'react-router-dom';

export const withRouter = (Component) => {
  const Wrapper = (props) => {
    const navigate = useNavigate();
    
    return (
      <Component
        navigate={navigate}
        {...props}
        />
    );
  };
  
  return Wrapper;
};

现在,在任何基于类的组件中,您都希望将用户重定向到特定的路径/组件,导入上面的withRouter.js文件,并使用this.props.navigate('/your_path_here')函数进行重定向

为了您的帮助,下面给出了显示相同内容的示例代码:

import React from 'react';
import {withRouter} from '.your_Path_To_Withrouter_Here/withRouter';

class Your_Component_Name_Here extends React.Component{
    constructor(){
        super()
        this.yourFunctionHere=this.yourFunctionHere.bind(this);
    }

    yourFunctionHere()
    {
        this.props.navigate('/your_path_here')
    }

    render()
    {
        return(
            <div>
              Your Component Code Here 
            </div>
        )
    }
}

export default withRouter(Your_Component_Name_Here);

上面的代码工作得非常完美。这只是一个小小的扩展。如果您需要onclick函数,下面是代码:

<div className = "row">
    <button className= "btn btn-primary" 
            onClick={this.yourFunctionHere}>RedirectTo</button>
</div>
 类似资料:
  • 问题内容: 使用此样板作为参考,我创建了一个Electron应用程序。它使用webpack捆绑脚本并通过Express Server托管脚本。 的WebPack配置是实质上相同的这个和服务器这样。 Electron的脚本加载: 然后index.html加载服务器托管的脚本: 我运行以构建应用程序并启动服务器,该服务器使用webpack将脚本捆绑在一起。 它工作正常,我的React组件App已安装。

  • 我试图路由到一个类组件,但它给我一个错误。当我将组件更改为功能性组件时,路由就开始工作了。如何路由到类组件? 我刚开始使用React-Router。我首先有一个要路由到的功能组件。但是一旦我意识到组件需要是一个类,我就把它更改为一个类,现在路由显示 “无法获取/探索/单词”。

  • 看这段视频,react路由器似乎很容易使用,但我找不到如何在我的代码中导航,因为我想在单击div时链接,而不是使用

  • 问题内容: 我想将CSS文件导入React组件。 我已经尝试过,但是下面出现错误; 找不到模块:错误:无法解析c:\ Users \ User \ User \ Documents \ pizza-app \ client \ src \ components @中的“文件”或“目录” ../../../public/styles/disabledLink。 /client/src/compone

  • 本文向大家介绍React-Router 4中` `组件有几种类型?相关面试题,主要包含被问及React-Router 4中` `组件有几种类型?时的应答技巧和注意事项,需要的朋友参考一下 HashRouter:老浏览器的history,主要通过hash来实现,对应 BrowserRouter:高版本浏览器,通过html5里面的history,对应 **MemeoryRouter:**node环境下

  • 问题内容: 我在玩和使用和。我想在不同的文件中构建多个组件,将其导入单个文件并将其捆绑在一起 假设我有几个这样的组件: my-navbar.jsx main-page.jsx 使用webpack并按照其教程进行操作,我有: 构建项目并运行它之后,在浏览器控制台中出现以下错误: 我究竟做错了什么?如何正确导入和导出组件? 问题答案: 尝试 默认设置 组件中的导出: 通过使用默认值,您表示将成为该模块