繁体   English   中英

React无法从组件渲染数组

[英]React can't render array from component

我有一些菜单此组件。 在这里,有一些菜单项的数组迭代。 我想将此组件导入其他main组件,但我收到此错误- A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object. A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object. 当我删除此数组迭代并保留简单链接时,一切都很好。 怎么了?

零件:

const LandingMenu = (props) => {
    return (
        props.data.map((element, _) =>
            <Link class="link" href={ element.target }>{ element.name }</Link>
        )
    )
};

export default LandingMenu;

进口

<LandingMenu data={LANDING_CONTENT.menu} />

React组件无法返回数组……它必须返回单个元素。

将输出包装在DIV中可能会正常工作:

const LandingMenu = (props) => {
    return (
        <div>
            {props.data.map((element, _) =>
                <Link class="link" href={ element.target }>{ element.name }</Link>
            )}
        </div>
    )
};

export default LandingMenu;

组件需要包装在根元素中。 如果它是另一个类中的辅助函数,则您的注释会很好。

因此,您的LandingMenu需要如下所示:

return (
    <div>
        {props.data.map((element, _) =>
            <Link class="link" href={ element.target }>{ element.name }</Link>}
    </div>
    )
)

一种替代解决方案是在当前正在使用LandingMenu任何组件中都具有渲染帮助器功能

//SomeComponent
renderHelperFunction(data){
    return (
        {data.map((element, _) =>
            <Link class="link" href={ element.target }>{ element.name }</Link>}
    )
)

render(){
    return (...

          {this.renderHelperFunction(this.props.data)}

    ...)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM