[英]How to send props to children in React Router v4?
我必須在子組件中使用提取功能,但是我不知道如何在Route中發送道具。 是否可以選擇執行此操作,還是必須以其他方式執行此操作?
這是我的父組件中的路由:
<Route path={`/beers/:beerId`} component={Beer}/>
然后,我想在子組件中使用提取:
fetchData = () => {
let url = `https://api.punkapi.com/v2/beers/${this.props.id}`;
fetch(url, {method: 'get'}).then(resp => resp.json()).then((data) =>
this.setState({
data: data
})
);
};
如果您希望從URL中獲取beerId,則可以從this.props.match.params.beerId
獲取它。
您還可以使用render方法以傳統方式直接傳遞它
<Route path={`/beers/:beerId`} render={()=><Beer id={YOURID}/>}/>
如果您使用的是render方法,則可以使用this.props.id
訪問id。 但是,由於您已經在URL中包含了啤酒ID,因此最好使用this.props.match.params.beerId
獲得啤酒ID。
Route
匹配時,它將向其持有的組件注入三個道具:
location
:有關當前位置的信息。 history
:訪問瀏覽器的歷史記錄和瀏覽方法。 match
:所有匹配的URL參數。 因此,在Beer
組件中,您可以使用match.params.beerId
和Ajax調用來訪問URL參數beerId
:
const {beerId} = this.props.match.params;
fetchData = () => {
let url = `https://api.punkapi.com/v2/beers/${beerId}`;
fetch(url, {method: 'get'}).then(resp => resp.json()).then((data) =>
this.setState({
data: data
})
);
}
您需要使用路線的render
屬性。 一個例子是:
<Route path={`/beers/:beerId`} render={(props) => <Beer {...props} beerList={beerList} />} />
其中beerList
是一個假設函數或變量,它作為prop
向下傳遞給<Beer />
組件。
更多信息: 一個簡單的React Router v4教程
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.