首页 > 解决方案 > 在父组件内有条件地渲染子组件

问题描述

我有一个包含子组件的父DataTable组件ColumnColumn如果 prop 设置为 true,我想包含一个特定的子组件。我已经尝试过逻辑 && 和三元运算符。问题是我不能将任何 null 或 undefined 值传递给DataTable. 逻辑 && 和三元运算符似乎提供了一个 false、null 或 undefined 值作为DataTablewhenthis.props.hasMiddleName为 false 的子值。如何修复此代码,以便在为 false 时不传递任何虚假值this.props.hasMiddleName

<DataTable dataUrl={this.props.url}>
    <Column Header={"First Name"} />
    { this.props.hasMiddleName &&
       <Column Header={"Middle Name"} />
    }
    <Column Header={"Last Name"} />
</DataTable>

标签: javascriptreactjs

解决方案


您应该在另一个函数中创建一个子数组。

renderChildren = () => {
    let children = [<Column Header={"First Name"} />]
    if(this.props.hasMiddleName) {
        children.push(<Column Header={"Middle Name"} />)
    }
    children.push(<Column Header={"Last Name"} />)
    return children
}

在你里面DataTable调用这个函数,它将渲染它的孩子。

<DataTable dataUrl={this.props.url}>
    {this.renderChildren()}
</DataTable>

推荐阅读