JavaScript Map.get(variableName)返回未定义

时间:2019-11-29 23:07:50

标签: javascript reactjs react-router

我正在使用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显示的内容

enter image description here

1 个答案:

答案 0 :(得分:1)

js Map键必须完全匹配:如果键是数字(在您的情况下为数字),则可以使用数字值检索它们。

props.postersMap.get(Number(posterId))可以。

或者保证您以任何其他可用的方式提供有效的数字。