當咱們使用react-router v3
的時候,咱們想跳轉路由,咱們通常這樣處理react
react-router
導出browserHistory
。browserHistory.push()
等等方法操做路由跳轉。相似下面這樣ios
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
等的導出~~redux
那怎麼辦?我如何控制路由跳轉呢???axios
withRouter
高階組件,提供了history
讓你使用~react-router
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
傳遞過去。。dom
就像問題章節的代碼那種場景使用,咱們就必須從組件中傳一個history
參數過去。。。post