国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

react-router v4如何使用history控制路由跳轉詳解

2024-05-06 15:22:47
字體:
來源:轉載
供稿:網友

前言

距離React Router v4 正式發布也已經挺久了,這周把一個React的架子做了升級,之前的路由用的還是v2.7.0版的,所以決定把路由也升級下,正好“嘗嘗鮮”...

江湖傳言,目前官方同時維護 2.x 和 4.x 兩個版本。(ヾ(。ꏿ﹏ꏿ)ノ゙咦,此刻相信機智如我的你也會發現,ReactRouter v3 去哪兒了?整丟了??巴拉出鍋了???敢不敢給我個完美的解釋!?)事實上 3.x 版本相比于 2.x 并沒有引入任何新的特性,只是將 2.x 版本中部分廢棄 API 的 warning 移除掉而已。按照規劃,沒有歷史包袱的新項目想要使用穩定版的 ReactRouter 時,應該使用 ReactRouter 3.x。目前 3.x 版本也還處于 beta 階段,不過會先于 4.x 版本正式發布。如果你已經在使用 2.x 的版本,那么升級 3.x 將不會有任何額外的代碼變動。

問題

當我們使用react-router v3的時候,我們想跳轉路徑,我們一般這樣處理

我們從react-router導出browserHistory。 我們使用browserHistory.push()等等方法操作路由跳轉。

類似下面這樣

import browserHistory from 'react-router';export function addProduct(props) { return dispatch => axios.post(`xxx`, props, config) .then(response => { browserHistory.push('/cart'); //這里 });}

but!! 問題來了,在react-router v4中,不提供browserHistory等的導出~~

那怎么辦?我如何控制路由跳轉呢???

解決方法

1. 使用 withRouter

withRouter高階組件,提供了history讓你使用~

import React from "react";import {withRouter} from "react-router-dom";class MyComponent extends React.Component { ... myFunction() { this.props.history.push("/some/Path"); } ...}export default withRouter(MyComponent);

這是官方推薦做法哦。但是這種方法用起來有點難受,比如我們想在redux里面使用路由的時候,我們只能在組件把history傳遞過去。。

就像問題章節的代碼那種場景使用,我們就必須從組件中傳一個history參數過去。。。

2. 使用 Context

react-router v4 在 Router 組件中通過Contex暴露了一個router對象~

在子組件中使用Context,我們可以獲得router對象,如下面例子~

import React from "react";import PropTypes from "prop-types";class MyComponent extends React.Component { static contextTypes = { router: PropTypes.object } constructor(props, context) { super(props, context); } ... myFunction() { this.context.router.history.push("/some/Path"); } ...}

當然,這種方法慎用~盡量不用。因為react不推薦使用contex哦。在未來版本中有可能被拋棄哦。

3. hack

其實分析問題所在,就是v3中把我們傳遞給Router組件的history又暴露出來,讓我們調用了~~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 岳普湖县| 循化| 斗六市| 温宿县| 砚山县| 栾川县| 岢岚县| 天峨县| 大庆市| 湖北省| 抚远县| 句容市| 台安县| 阳城县| 东源县| 临湘市| 兴国县| 友谊县| 瓦房店市| 长兴县| 朝阳县| 太保市| 澄城县| 建宁县| 本溪| 孝昌县| 屏边| 正阳县| 内丘县| 长治市| 宁乡县| 洪雅县| 紫金县| 监利县| 绍兴县| 英吉沙县| 靖安县| 靖西县| 德令哈市| 长泰县| 尤溪县|