如何在 React 路由器中捕获 URL 的动态部分

我有这条调用PriceWithId函数的路由


<Route path='/collections/:pId' component={PriceWithID} />


功能是这样的


const PriceWithID = ({match}) =>

    {

        let test = Object.entries(match);

        let test2 = test.filter(([prop])=>(prop === 'params'));

        let test3 = test2[0][1];

        let test4 = Object.values(test3)[0]

        return(

          <Price image={IMGS.filter((i)=>(i.id === parseInt(test4,10)))[0]}/>

        );

    }


我知道有一个更好的 oneline 方式来实现test4。我使用的方法伴随着反复试验。谁能告诉我更好的方法,以便我可以用它替换 parseInt 中的 test4


哈士奇WWW
浏览 139回答 2
2回答

慕妹3146593

使用this.props.match.params.pId或功能组件const PriceWithID = (props) =>&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; let pId = props.match.params.pId&nbsp; &nbsp; &nbsp; &nbsp; return(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <Price image={IMGS.filter((i)=>(i.id === parseInt(pId))[0]}/>&nbsp; &nbsp; &nbsp; &nbsp; );&nbsp; &nbsp; }

慕田峪4524236

可以通过这种方式改进以前的答案:const PriceWithID = ({match}) =>&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <Price image={IMGS.filter((i)=>(i.id === parseInt(match.params.pId,10)))[0]}/>&nbsp; &nbsp; &nbsp; &nbsp; );&nbsp; &nbsp; }但由于之前的解决方案是正确的,我将其标记为答案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript