溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

react路由跳轉(zhuǎn)不刷新如何解決

發(fā)布時(shí)間:2023-01-28 10:29:20 來源:億速云 閱讀:213 作者:iii 欄目:web開發(fā)

這篇文章主要介紹了react路由跳轉(zhuǎn)不刷新如何解決的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇react路由跳轉(zhuǎn)不刷新如何解決文章都會(huì)有所收獲,下面我們一起來看看吧。

react路由跳轉(zhuǎn)不刷新的解決辦法:1、在路由組件最上層元素上加一個(gè)key增加路由的識(shí)別度;2、使用withRouter關(guān)聯(lián)組件,代碼如“render() {return (<div key={this.props.location.key}></div>); }}export default withRouter(routers);”。

react 跳轉(zhuǎn)后路由變了頁面沒刷新

問題

這樣的問題貌似原因還挺多的,我的問題是帶參數(shù)的url不能刷新,router 5.0版本 ,使用withRouter關(guān)聯(lián)組件進(jìn)行頁面跳轉(zhuǎn)
如下所示
react路由跳轉(zhuǎn)不刷新如何解決

解決方案

在路由組件上最上層元素上加一個(gè)key增加路由的識(shí)別度,因?yàn)槠胀ǖ奶D(zhuǎn)是根據(jù)path來識(shí)別的,但是path帶上參數(shù)時(shí),路由無法精確識(shí)別。不過,在跳轉(zhuǎn)頁面的時(shí)候,每個(gè)地址都會(huì)在localtion對(duì)象里添加一個(gè)key。如下打印

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

react路由跳轉(zhuǎn)不刷新如何解決
我們將這個(gè)key綁定在 路由頂層元素上就能精確定位路由了

 render() {
   return (
     {/*就是這個(gè)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>
   );
 }

然鵝,可能你發(fā)現(xiàn) this.props為{} 空對(duì)象
那可能是因?yàn)槟銢]有使用withRouter關(guān)聯(lián)組件,關(guān)聯(lián)一下就好了。注意一點(diǎn),app.js無法關(guān)聯(lián),withrouter只能關(guān)聯(lián)路由組件或者app.js的子組件

import React, { Component } from "react";import {withRouter } from "react-router";class routers extends Component {
/**
 * 生命周期函數(shù)
 */
// 組件掛載
componentDidMount() {
  console.log(this.props.location);
}
render() {
  return (
    <div key={this.props.location.key}>
    </div>
  );
}}export default withRouter(routers);

關(guān)于“react路由跳轉(zhuǎn)不刷新如何解決”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“react路由跳轉(zhuǎn)不刷新如何解決”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI