我正在使用React Router通过URL参数传递ID,并将变量设置为let { posterId } = useParams();
这似乎按预期工作,因为我可以在JSX中将其写得很好<h1> This is a specific poster {posterId}</h1>
但是,当我尝试使用它来获取我通过道具传递的地图时,它从地图props.postersMap.get(posterId)
返回未定义。
我验证了映射是否已填充,并且如果我将.get方法硬编码为变量值,它将按预期工作。有什么我可以忽略的吗?
编辑:完整的组件代码
import React from 'react'
import { useParams} from 'react-router-dom'
export default function Poster(props) {
let { posterId } = useParams();
return (
<div>
{console.log(props.postersMap)}
{console.log(posterId)}
{console.log(props.postersMap.get(posterId))}
{props.postersMap.get(posterId) ? <p>{props.postersMap.get(posterId).band}</p> : <p></p>}
</div>
)
}
这是我的console.log显示的内容
答案 0 :(得分:1)
js Map
键必须完全匹配:如果键是数字(在您的情况下为数字),则可以使用数字值检索它们。
props.postersMap.get(Number(posterId))
可以。
或者保证您以任何其他可用的方式提供有效的数字。