首页 > 解决方案 > 如果返回 null,则反应 Native Flatlist

问题描述

下面是我的 flatlist renderrow 函数,不提供此条件 this.state.date.format('YYYYMMDD') <= moment(item.tarih).format('YYYYMMDD') && this.state.secilenAyBasi.year() == moment(item.tarih).format('YYYY') ?,并且 renderRow 函数为所有项目返回 null(所以如果不返回元素)返回只想要组件我怎么做,我尝试了 ListEmptyComponent 道具,但我不想要结果谢谢

  renderRow = (item,index) => {
    return (
    this.state.date.format('YYYYMMDD') <= moment(item.tarih).format('YYYYMMDD') && this.state.secilenAyBasi.year() == moment(item.tarih).format('YYYY') ?
    <View>
     {!this.aynıTarihmi(item,index) ?
    <View style={styles.etkinlikTarihContainer}>
      <Text style={styles.etkinlikTarihText}>
        {moment(item.tarih).format('DD MMMM YYYY')}
      </Text>
    </View> : null}
    <TouchableOpacity style={[styles.etkinlikView,this.aynıTarihmi(item,index) ? {borderTopWidth: 0, borderBottomWidth: 1 }: null]}>
    <View style={{alignItems: 'center', minWidth:70}}>
        {item.mod_txt != "Tüm Gün" ? 
          <View style={{alignItems: 'center', justifyContent:'center'}}> 
            {this.getTime(item.baslangic)}
            {this.getTime(parseInt(item.baslangic, 10) +parseInt(item.sure, 10))}
          </View> :
          item.mod_txt == "Tüm Gün" ?
          <Text style={{color:'black'}}> Tüm Gün </Text> : null}
      </View>
      <View
        style={[styles.etkinlikBordorView,{borderRightColor: item.renk ? item.renk : 'green'}]}
      />
      <View style={{justifyContent: 'flex-start'}}>
        <Text style={{fontSize: 15, marginLeft: 5,color:'black',marginVertical:5}}>
          {item.metin ? item.metin : 'Etkinlik Yok'}
        </Text>
      </View>
    </TouchableOpacity>
    </View> : null
    )}

这是我的平面列表组件:

  getActivity() {

    return (
      <View style={styles.etkinlikContainer}>
      <FlatList
      data={this.state.takvimgirdileriStt}
      extraData={this.state.date}
      renderItem={({item,index}) =>this.renderRow(item, index)}
      keyExtractor = {(item,index) => index.toString()}
      />
      </View>
    )
  }

标签: javascriptreactjsreact-nativereact-native-flatlist

解决方案


我觉得你的条件不对。

如果日期格式相同,您可以尝试以下代码

(moment(this.state.date.format('YYYYMMDD')).diff(moment(item.tarih).format('YYYYMMDD'))) <0 && moment(this.state.secilenAyBasi.year())。 isSame(时刻(item.tarih).format('YYYY'))


推荐阅读