加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 自然语言处理、云硬盘、数据治理、数据工坊、存储容灾!
当前位置: 首页 > 教程 > 正文

react路由返回时刷新没有实现,如何解决

发布时间:2023-07-06 11:00:54 所属栏目:教程 来源:转载
导读:   这篇文章主要介绍“react路由返回时不刷新如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react路由返回时不刷新
  这篇文章主要介绍“react路由返回时不刷新如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react路由返回时不刷新如何解决”文章能帮助大家解决问题。
 
  react路由返回时不刷新的解决办法:1、在路由组件上最上层元素上加一个key增加路由的识别度;2、将key绑定在路由顶层元素上,精确定位路由;3、使用withRouter关联下组件即可。
 
  react 跳转后路由变了页面没刷新的解决方案
 
  最近在学习React的过程中遇到了路由跳转后页面不刷新的问题,本文就详细的介绍一下解决方法,需要的朋友们下面随着小编来一起学习学习吧
 
  问题
 
  这样的问题貌似原因还挺多的,我的问题是带参数的url不能刷新,router 5.0版本 ,使用withRouter关联组件进行页面跳转
 
  如下所示
 
  react路由返回时不刷新如何解决
 
  路由代码
 
  react路由返回时不刷新如何解决
 
  解决方案
 
  在路由组件上最上层元素上加一个key增加路由的识别度,因为普通的跳转是根据path来识别的,但是path带上参数时,路由无法精确识别。不过,在跳转页面的时候,每个地址都会在localtion对象里添加一个key。如下打印
 
  // 组件挂载
 
   componentDidMount() {
 
     console.log(this.props.location);
 
   }
 
  react路由返回时不刷新如何解决
 
  我们将这个key绑定在 路由顶层元素上就能精确定位路由了
 
  render() {
 
     return (
 
       {/*就是这个key*/}
 
       <div key={this.props.location.key}>
 
           <Switch>
 
             <Route exact path="/" component={Home} />
 
             <Route exact path="/products/:id" component={Products} />
 
             <Route exact path="/about" component={About} />
 
             <Route exact path="/solution" component={Solution} />
 
             <Route
 
               exact
 
               path="/solutionDetails/:id"
 
               component={SolutionDetails}
 
             />
 
             <Route exact path="/download" component={Download} />
 
             <Route path="/about" component={Download} />
 
             <Route exact path="/details/:id" component={Details} />
 
             <Route path="/contact" component={Contact} />
 
             <Route component={ErrorPage} />
 
           </Switch>
 
       </div>
 
     );
 
   }
 
  然鹅,可能你发现 this.props为{} 空对象
 
  那可能是因为你没有使用withRouter关联组件,关联一下就好了。注意一点,app.js无法关联,withrouter只能关联路由组件或者app.js的子组件
 
  import React, { Component } from "react";
 
  import {withRouter } from "react-router";
 
  
 
  class routers extends Component {
 
   /**
 
    * 生命周期函数
 
    */
 
   // 组件挂载
 
   componentDidMount() {
 
     console.log(this.props.location);
 
   }
 
   render() {
 
     return (
 
       <div key={this.props.location.key}>
 
       </div>
 
     );
 
   }
 
  }
 
  export default withRouter(routers);
 

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!