【问题标题】:React native list empty component not working in section list反应本机列表空组件在部分列表中不起作用
【发布时间】:2019-07-26 12:40:52
【问题描述】:

当我的部分为空时,我试图渲染空组件。这是我的示例代码

<SectionList
    sections={[
        {title: 'sectionOne', data: this.props.Activities.ActivityTypeOne},
        {title: 'sectionTwo', data: this.props.Activities.ActivityTypeTwo},
        {title: 'sectionThree', data: this.props.Activities.ActivityTypeThree}
    ]}
    keyExtractor={ (item, index) => index }
    stickySectionHeadersEnabled={true}
    extraData={this.state}
    ListEmptyComponent={this.renderEmptyScreens}
    />

但是当这3个数组全部为空时,不会触发ListEmptyComponent 谁能告诉我这段代码有什么问题,或者如果我的逻辑不正确,任何人都可以解释一下。 基本上,当所有 3 个数组都为空时,我需要渲染一些视图。

【问题讨论】:

  • 你从哪里得到sectionList
  • 我没有得到它@vencovsky
  • 现在有了你的编辑,我知道你从哪里得到它。请展示它不起作用的情况。请显示But when this 3 all arrays are empty
  • 您的列表不是空的,它包含三个部分。这些部分为空的事实无关紧要。
  • this.props.Activities.ActivityTypeOne, this.props.Activities.ActivityTypeTwo, this.props.Activities.ActivityTypeThree 当这个列表为空时我需要显示另一个视图

标签: javascript list react-native


【解决方案1】:

在自己遇到这个问题后,我发现sections 属性必须完全为空列表才能被视为空(也就是sections 本身应该等于[] )。

解决方案:

使用三元运算符根据您自己的标准选择传递给sections 的内容。如果决定为空,请传入[],否则传入您的sections 对象。例如,您的代码如下所示:

isSectionsEmpty(sectionsObject){
    //logic for deciding if sections object is empty goes here
}

render(){
    /* ...
       Other render code
       ...
    */
    const sections = [
        {title: 'sectionOne', data: this.props.Activities.ActivityTypeOne},
        {title: 'sectionTwo', data: this.props.Activities.ActivityTypeTwo},
        {title: 'sectionThree', data: this.props.Activities.ActivityTypeThree}
    ]
    return(
        ...
        <SectionList
            sections={this.isSectionsEmpty(sections) ? [] : sections}
            keyExtractor={ (item, index) => index }
            stickySectionHeadersEnabled={true}
            extraData={this.state}
            ListEmptyComponent={this.renderEmptyScreens}
            />
        ...
    )
}

注意:你也可以放弃三元运算符,直接从isSectionsEmpty返回你的section对象或[],但是这个方法允许你检查section是否在其他地方是“空的”如果需要,在您的代码中。

【讨论】:

    【解决方案2】:

    您可以添加一个节页脚组件,您将在其中根据section.data.length 呈现您的空屏幕

    一个小例子见this

    【讨论】:

    • 感谢@Alexandru 的回答。如果我这样使用,它将为每个空白部分提供每个视图。所以在我的例子中,它给出了 3 个视图
    猜你喜欢
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 2021-03-08
    • 2019-08-27
    • 2017-08-18
    相关资源
    最近更新 更多