Javascript 如何在React Router v4中向儿童发送道具?
我必须使用fetchinchildren组件,但我不知道如何在路径中发送道具。有没有其他选择,或者我必须用其他方式 这是我的父组件中的路由:Javascript 如何在React Router v4中向儿童发送道具?,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我必须使用fetchinchildren组件,但我不知道如何在路径中发送道具。有没有其他选择,或者我必须用其他方式 这是我的父组件中的路由: <Route path={`/beers/:beerId`} component={Beer}/> fetchData = () => { let url = `https://api.punkapi.com/v2/beers/${this.props.id}`; fetch(url, {method: 'get
<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获取蜂巢,可以从
this.props.match.params.beerId
获取蜂巢
也可以使用“渲染”方法以传统方式直接传递
<Route path={`/beers/:beerId`} render={()=><Beer id={YOURID}/>}/>
}/>
如果使用的是渲染方法,则可以使用this.props.id
访问id。
但是,由于您已经在URL中拥有啤酒id,如果您希望从URL中获取啤酒id,则最好使用
this.props.match.params.beerId
获取啤酒id。您可以从this.props.match.params.beerId
获取啤酒id
也可以使用“渲染”方法以传统方式直接传递
<Route path={`/beers/:beerId`} render={()=><Beer id={YOURID}/>}/>
}/>
如果使用的是渲染方法,则可以使用this.props.id
访问id。
但是,由于URL中已经有啤酒id,如果您使用
this.props.match.params.beerId
获得啤酒id,则最好使用路由的render
属性。例如:
<Route path={`/beers/:beerId`} render={(props) => <Beer {...props} beerList={beerList} />} />
}/>
其中,beerList
是一个假设的函数或变量,作为prop
向下传递到
组件
进一步信息:您需要使用路由的
渲染属性。例如:
<Route path={`/beers/:beerId`} render={(props) => <Beer {...props} beerList={beerList} />} />
}/>
其中,beerList
是一个假设的函数或变量,作为prop
向下传递到
组件
进一步信息:当路线匹配时,它将向其持有的组件注入三个道具:
位置
:有关当前位置的信息
历史记录
:访问浏览器历史记录和浏览方法
match
:所有匹配的URL参数
因此,在Beer
组件中,您可以使用match.params.beerId
访问URL参数beerId
,以及Ajax调用:
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
})
);
}
当路线匹配时,它将向其持有的组件注入三个道具:
位置
:有关当前位置的信息
历史记录
:访问浏览器历史记录和浏览方法
match
:所有匹配的URL参数
因此,在Beer
组件中,您可以使用match.params.beerId
访问URL参数beerId
,以及Ajax调用:
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
})
);
}
你想访问beerId
组件中的beerId
吗?是的,这就是我想做的。在下面找到我的答案。你想访问beerId
组件中的beerId
吗?是的,这是我想做的。在下面找到我的答案。这不是他想要的。他需要把道具传给一条路线。@Ben试图让孩子长出蜂巢,所以这应该行得通。这不是他想要的。他需要把道具传给一条路线。@Ben正试图让孩子长出蜂巢,所以这应该行得通。