Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在React Router v4中向儿童发送道具?_Javascript_Reactjs_React Router - Fatal编程技术网

Javascript 如何在React Router v4中向儿童发送道具?

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

我必须使用fetchinchildren组件,但我不知道如何在路径中发送道具。有没有其他选择,或者我必须用其他方式

这是我的父组件中的路由:

<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正试图让孩子长出蜂巢,所以这应该行得通。