Чтобы установить данные в плоском списке, поступающем из firebase

Я новичок в реагировании на родной. Я реализовал push-уведомление через firebase. Теперь я просто хочу установить данные в плоском списке ниже, это изображение событий, для которых я хочу отображать данные. Я просто хочу отобразить список событий. Под сообщением. Пожалуйста, помогите мне установить только один элемент, другие я могу установить. Вот мой код.

    fetchFriendsList=(eventId)=>{
let allEventsList = [...this.state.allEventsList];
firebase.database().ref('/events').child(eventId).once
('value').then((snapshot) => {
let data = snapshot.val();
let items = Object.values(data);

allEventsList.push(items);
this.setState({allEventsList : allEventsList});
ToastAndroid.show("kk>"+allEventsList.length , 
ToastAndroid.SHORT);
}).then((data)=>{

}).catch((error)=>{
//error callback
console.log('error ' , error)
})   
}

//get event id from user events
deleteOldEvents=()=>{
let eventsList = [...this.state.userEventsList];

for(var i=0;i<eventsList.length;i++){
this.deleteFromFireBase(eventsList[i].eventId)
}
}

//app users remove that not in contacts
deleteFromFireBase=(eventId)=>{
let timeRemaining = 1;

firebase.database().ref('/events').child(eventId).once
('value').then((snapshot) => {
let data = snapshot.val();
let STime = data.sTime;  // start time
let eventDate = data.eventDate;

timeRemaining=this.remainingTimeInMin(STime,eventDate);
}).then((data)=>{
//remove from events
if(timeRemaining < 0){
this.setState({removeEventsList:[]});    



firebase.database().ref('/events').child(eventId).child('friends').once('value').then((snapshot) => {
let data = snapshot.val();
let items = Object.values(data);
this.setState({removeEventsList:items});    
}).then((data)=>{
//remove event data from users node
let removeEventsList = 
[...this.state.removeEventsList];

for(var i=0;i<removeEventsList.length;i++){
let getPhone= removeEventsList[i].phone

firebase.database().ref('/users').child(getPhone).child('/events').child(eventId).remove();
}
//remove whole event from event node

 firebase.database().ref('/events').child(eventId).remove();
 }).catch((error)=>{
 //error callback
 console.log('error ' , error)
 }) 
 }
 }).catch((error)=>{
//error callback
console.log('error ' , error)
})   
}

введите здесь описание изображения

Вот код для flatlist

 <FlatList style={{}} keyboardShouldPersistTaps={'always'}
     data = {this.state.allEventsList}

     ItemSeparatorComponent={this.renderSeparator}
     renderItem = { ({item}) => {
     return(
     <TouchableOpacity onPress={() => this.goToNextScreen(item)}>
     <View style={{flexDirection:'row',paddingBottom:5,paddingTop:5, 
     justifyContent: 'space-between',alignItems: 'center'}}>

      <View style={{flexDirection:'column',justifyContent: 'flex-start'}}>
      <Text style={styles.itemText2CS}>
      <Text style={styles.baseText_titillium_web}>
       {item.groupName}</Text>
       </Text>
       </View>
      <View style={{justifyContent: 'flex-end' ,marginRight:10,textAlignVertical: "center",}}>
      <Image  source = {require("./images/arrow_right.png")} />
      </View>
      </View>
      </TouchableOpacity>
      )}}
       />
       </View>

person shabnam singh    schedule 21.11.2018    source источник
comment
Где ваш код FlatList?   -  person oma    schedule 21.11.2018
comment
хорошо я загружу подожди   -  person shabnam singh    schedule 21.11.2018
comment
Пожалуйста, посмотрите, я загрузил это   -  person shabnam singh    schedule 21.11.2018


Ответы (1)


Я думаю, что ваша проблема здесь:

let items = Object.values(data); // items is an array

allEventsList.push(items);// allEventsList is an array, with allEventsList [0] = items 
this.setState({allEventsList : allEventsList}); // this.state.allEventsList = [[items]]

Итак, у вас есть массив массивов. При использовании FlatList установите data в первый элемент массива, например:

data = {this.state.allEventsList[0]}

Дайте мне знать, если это работает, или если у вас есть какие-либо другие вопросы.

person oma    schedule 21.11.2018
comment
нет, я просто хочу установить данные, которые я получил для событий из firebase. я просто хочу установить события на экране мобильного телефона. - person shabnam singh; 21.11.2018
comment
Я действительно не понимаю вашего комментария .. не могли бы вы объяснить немного больше? - person oma; 21.11.2018
comment
я реализовал все, например, push-уведомление и получение данных, я просто хочу установить данные в плоский список сейчас - person shabnam singh; 22.11.2018