1. 程式人生 > 程式設計 >react 跳轉後路由變了頁面沒重新整理的解決方案

react 跳轉後路由變了頁面沒重新整理的解決方案

問題

這樣的問題貌似原因還挺多的,我的問題是帶引數的url不能重新整理,router 5.0版本 ,使用withRouter關聯元件進行頁面跳轉
如下所示

在這裡插入圖片描述

路由程式碼

在這裡插入圖片描述

解決方案

在路由元件上最上層元素上加一個key增加路由的識別度,因為普通的跳轉是根據path來識別的,但是path帶上引數時,路由無法精確識別。不過,在跳轉頁面的時候,每個地址都會在localtion物件裡新增一個key。如下列印

 // 元件掛載
  componentDidMount() {
    console.log(this.props.location);
  }

在這裡插入圖片描述

我們將這個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="/abouDyEummwt" 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 c
omponent={ErrorPage} /> </Switch> </div> ); }

然鵝,可能你發現 this.props為{} 空物件
那可能是因為你沒有使用withRouter關聯元件,關聯一下就好了。注意一點,app.無法關聯,withrouter只能關聯路由元件或者app.js的DyEummw子元件

import React,{ Component } from "react";
import {withRouter } from "react-router";

class routers extendhttp://www.cppcns.com
s Component { /** * 生命週期函式 */ // 元件掛載 componentDidMount() { console.log(this.props.location); } render() { return ( <div key={this.props.location.key}> </div> ); } } export default withRouter(routers);

到此這篇關於react 跳轉後路由變了頁面沒重新整理的解決方案的文章就介紹到這了,更多相關react 跳轉後頁面沒重新整理內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!