You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何从嵌套对象数组中提取指定字段渲染组件

你可以通过嵌套解构或者直接访问嵌套对象属性的方式拿到songInfo里的字段,下面是两种可行的修改方案:

方案1:直接访问嵌套属性(可读性更高)

修改render方法中map的取值逻辑,用可选链操作符?.做异常兜底,避免songInfo为空时页面报错:

render() {
    const tracklist = this.state.tracks;
    const tracks = tracklist.map(
        ({isrc, duration, explicit, songInfo}) =>
            <Track 
                key={isrc} 
                fullTitle={songInfo?.fullTitle} 
                isrc={isrc} 
                duration={duration} 
                explicit={explicit} 
                geniusUrl={songInfo?.geniusUrl} 
            />
    );
    return (
        <React.Fragment>
            <div className="border">
                <ul>
                    {tracks}
                </ul>
            </div>
        </React.Fragment>
    )
}

如果你的项目暂不支持可选链语法,可以改用短路运算兜底:

fullTitle={songInfo ? songInfo.fullTitle : ''}
geniusUrl={songInfo ? songInfo.geniusUrl : ''}

方案2:嵌套解构赋值

你也可以在解构参数的时候直接提取嵌套的songInfo字段,同时给空的songInfo设置默认空对象避免解构报错:

const tracks = tracklist.map(
    ({isrc, duration, explicit, songInfo: {fullTitle, geniusUrl} = {}}) =>
        <Track 
            key={isrc} 
            fullTitle={fullTitle} 
            isrc={isrc} 
            duration={duration} 
            explicit={explicit} 
            geniusUrl={geniusUrl} 
        />
);

内容的提问来源于stack exchange,提问作者cr542

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:57:00