[英]How do i pass props in react router component?
我对做出反应并试图了解如何传递道具很陌生。
第一个我设置了一个包含子类别属性的 Navlink 组件:
<NavLink
catid={category.id}
to={category.route}
catname={category.name}
subcategories={category.subcategories}
>
{category.name}
</NavLink>
{category.route}
, {category.name}
, {category.subcategories}
是从 json 文件中获取的,所以这部分是可以的。
每条路线的定义如下:
<Route
path='/epicerie-sucree'
render={(props) => (
<CategoryPage
{...props}
catid={10}
catname={"Epicerie sucrée"}
subcategories={props.subcategories}
/>
)}
/>
所以它会渲染一个名为<CategoryPage/>
的组件
这是 CategoryPage 组件的代码:
export default function CategoryPage(props) {
return (
<div>
{ props.subcategories.map(subcat => (
<div>{subcat.subcat_name}</div>
))}
<FooterCat cat={catData.categories}></FooterCat>
</div>)
}
所以 categoryPage 组件应该正确接收通过路由器传输的道具,不是吗?
相反,它会引发错误“TypeError:无法读取未定义的属性'map'”我不明白......谢谢
NavLink
不会将 props 传递给路由正在渲染的组件,但您可以做的是通过发生的路由推送传递一些“状态”。 render
prop 将route-props传递给组件,然后将其传播到CategoryPage
组件。
<NavLink
to={{
pathname: category.route,
state: {
catid: { category.id },
catname: { category.name },
subcategories: { category.subcategories },
}
}}
>
{category.name}
</NavLink>
现在 state 将通过location道具上的路由推送。
props.location.state.subcategories
零件
export default function CategoryPage(props) {
return (
<div>
{
props.location.state.subcategories.map(subcat => (
<div>{subcat.subcat_name}</div>
))}
<FooterCat cat={catData.categories}></FooterCat>
</div>)
}
可能需要对catData.categories
做同样的事情,因为不清楚那是什么
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.