反应本地Firebse平面列表数据未在文本和图像中显示

时间:2018-10-20 17:44:44

标签: android reactjs firebase native flat

我的数据没有显示,我正在实时使用Firebase,并在android studio中的React Native android模拟器上进行了测试:

<FlatList
   data={this.state.userList}
   keyExtractor={(item,index)=>item.article_title}
   renderItem={({item}) =>
       <View style={{alignItems:'center',justifyContent:'center'}}>
           <Image style={{height:40,width:40,borderRadius:20}}
               source={{uri:`${item.article_image}`}} />
           <Text style={{color:'black',fontWeight:'bold',fontSize:30}}>
              {item.article_title}
           </Text>
       </View>
   } />

4 个答案:

答案 0 :(得分:0)

removeClippedSubviews = {false}使用它。如果不起作用,请尝试进行平面列表优化 check this thread

答案 1 :(得分:0)

问题很可能是从Firebase返回的数据不是数组。通过遍历对象或使用lodash辅助函数之一,尝试将其转换为数组。

类似这里的内容:transform object to array with lodash

使用lodash,您可以执行以下操作:

<FlatList
    data={_.values(this.state.userList)}
    keyExtractor={(item, index) => item.article_title}
    renderItem={({item}) =>

        <View style={{alignItems: 'center', justifyContent: 'center'}}>
            <Image style={{height: 40, width: 40, borderRadius: 20}}
                   source={{uri: `${item.article_image}`}}/>
            <Text style={{color: 'black', fontWeight: 'bold', fontSize: 30}}>{item.article_title}</Text>

        </View>

    }/>

答案 2 :(得分:0)

我的数组转换

state={
userList:[]
}
ComponentWillMount()
{
  firebase.database().ref().child('datas').once('value',(snap) =>{
    let userList=[]
    snap.forEach((data) =>{
      const {article_title,article_content,article_image}= data.val()
      userList.push({article_title,article_content,article_image})
    })
    this.setState({userList})
  })
}

答案 3 :(得分:0)

感谢您提供宝贵的答案,导致我出现问题的原因不是数组转换问题:firebase版本:)