首先,你不必做if statement
var r = this;
,因爲這是指回調本身,這因爲您使用箭頭功能是指陣營組件上下文的語境。
根據該文檔:
歷史對象通常具有以下屬性和方法:
所以在導航的同時,你可以通過通過道具來歷史的物體,像
this.props.history.push({
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
})
或類似的路段組件
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
,然後在其中呈現與/template
組件路線,您可以訪問通過的道具,如
this.props.location.state.detail
另請注意,使用道具的歷史記錄或位置對象時,您需要將組件連接到withRouter
。
按照文檔:
withRouter
你可以訪問歷史記錄對象的屬性,並通過withRouter
高次成分最接近 <Route>'s
匹配。 withRouter
將在每次路線更改時重新呈現其組件,其中 與<Route>
呈現props: { match, location, history }
相同。
所呈現的組件由'Route'應獲得'this.props.location','this.props.history',等等。我認爲你不需要在v4中使用'ref'。嘗試做'this.props.history.push('/ template');' – saadq
它不是ref,它是指向這個的變量; this.props.history.push( '/模板');帶我到下一頁,但我想通過他們的道具。 – IshanGarg
您正試圖將'props'傳遞給匹配路由的組件?我認爲[這個GitHub線程](https://github.com/ReactTraining/react-router/issues/4105)解決您的問題。 – saadq