Reactjs 通过React路由器传递值v4<;链接/>;
问题:我如何通过React路由器的链接组件传递一个道具或单个值(如_id),并在端点捕获它 这就是我的意思:假设我们在第/a页。该链接将用户带到/b。因此Reactjs 通过React路由器传递值v4<;链接/>;,reactjs,hyperlink,react-router,Reactjs,Hyperlink,React Router,问题:我如何通过React路由器的链接组件传递一个道具或单个值(如_id),并在端点捕获它 这就是我的意思:假设我们在第/a页。该链接将用户带到/b。因此。现在,我需要通过链接传递一个_id,从/a到/b <Link to='/b' params={_id}>blah blah</Link> 废话 我试图传递的id是链接组件嵌套在其中的对象的属性 我在另一个StackOverflow线程中发现了这个语法params={}。我的代码编译时没有中断,所以这可能意味着它工作
。现在,我需要通过链接传递一个_id,从/a到/b
<Link to='/b' params={_id}>blah blah</Link>
废话
我试图传递的id是链接组件嵌套在其中的对象的属性
我在另一个StackOverflow线程中发现了这个语法params={}
。我的代码编译时没有中断,所以这可能意味着它工作了?但是,我不确定如何在端点检索这个传递的值
非常感谢您的帮助。要通过链接组件传递数据,您可能只需要接受实际链接上的参数
<Link to={`/b/${_id}`}>blah blah</Link>
废话
在路线上,你会设置这样的东西
然后,您可以通过this.props.match.params.id
如果你真的不想让你的身份证出现在实际路线上,那就有点烦人了 传球道具 您可以通过
状态
对象将任意道具传递到路线:
<Link to={{ pathname: '/route', state: { foo: 'bar'} }}>My route</Link>
const {id} = props.match.params
console.log(id) // "foo"
传递参数
配置路由路径以接受命名参数(:id
):
您可以通过match
对象访问组件中的参数:
<Link to={{ pathname: '/route', state: { foo: 'bar'} }}>My route</Link>
const {id} = props.match.params
console.log(id) // "foo"
来源
<Link to={`/exchangeClicked/${variable1} ,${variable2},${variable3}`} >Click
</Link>
点击
2.配置路由路径以接受这些参数
<Route
exact
path="/exchangeClicked/:variable1,:variable2,:variable3"
component={MyComponent}
/>
3.然后,您可以通过访问新路由中的参数
<Typography variant="h4" color="inherit">
Exchange:{this.props.match.params.variable1}
</Typography>
<Typography variant="Body 1" color="inherit">
Type:{this.props.match.params.variable2}
</Typography>
<Typography variant="Body 1" color="inherit">
Durabiliy:{this.props.match.params.variable3}
</Typography>
交换:{this.props.match.params.variable1}
类型:{this.props.match.params.variable2}
持久性:{this.props.match.params.variable3}
如果使用react钩子,则可以使用useLocation
单击我
因此,当在命名参数之外传递道具时,我想无法在
props
root访问它们?您必须进入location.state
才能获取它们?@MegaMatt yesprops.location.state.myPropName
请确保使用路由器HOC包装您的组件。使用上述解决方案传递数据时,我始终得到一个未定义的组件。有什么帮助吗?@mohamadhasham这是一个重要的观点。进一步解释。
<Typography variant="h4" color="inherit">
Exchange:{this.props.match.params.variable1}
</Typography>
<Typography variant="Body 1" color="inherit">
Type:{this.props.match.params.variable2}
</Typography>
<Typography variant="Body 1" color="inherit">
Durabiliy:{this.props.match.params.variable3}
</Typography>
<Route
exact
path={`page/:id`}
component={BComponent}
/>
const BComponent = (props) => {
const location = useLocation();
console.log(location.state.foo);
return ()
}