Предположим, мне дан объект элементов, который я зацикливаю на карте и визуализирую. Когда я нажимаю на один из списков, я ожидаю, что этот элемент скроется от рендеринга.
Object.keys(this.state.doctors).map((uid, i) => { return (
<View style={styles.doctorContainer} key={uid}>
<View style={styles.imgCircleContainer}>
<View>
<Image style={styles.userImg} source={require( '../Images/Naseebullah.jpg')} resizeMode="contain" />
<View style={styles.imgOverlay} />
</View>
</View>
<View>
<Text style={{textAlign: 'center', fontSize: 15, color: '#bccad0'}}>{this.state.doctors[uid].name}</Text>
<Text style={{textAlign: 'center', fontSize: 12, color: 'rgba(188, 202, 208, 0.7)'}}>{this.state.doctors[uid].profession}</Text>
</View>
<TouchableOpacity style={styles.folllowBtn} onPress={()=> Database.followDoctor( this.state.doctors[uid].name, this.state.doctors[uid].profession, uid, this.state.type, this.state.healthAlert )}>
<Text style={{color: 'white', fontSize: 13, fontWeight: 'bold', textAlign: 'center'}}>Follow</Text>
</TouchableOpacity>
</View>
) })
Итак, когда Database.followDoctor()
вызывается onPress. Этот элемент должен скрываться. Не весь список. Как этого добиться?
Я исхожу из фона angularjs, в котором angular у нас есть так называемые локальные переменные, назначенные каждому элементу в цикле, и мы можем их обусловить. Но как этого добиться в React Native?
Редактировать
Метод followDoctor () бесполезен, потому что это метод, который передается на сервер firebase.
static followDoctor(msgTo, profession, uid, type, healthAlert) {
User().then(user => {
firebase.app().database().ref(`/Users/${user.uid}/Doctors/${uid}`).set({
name: msgTo,
profession: profession
}).then(() => {
console.log("successfully added to DoctorsList!");
this.initialiseMessagesDB(msgTo, healthAlert, uid).then(() => {
//this.setMessage(uid, type);
})
//this.setMessage(uid, type, healthAlert, userName);
}).catch(e => console.log(e));
});
}
Проблема заключается в функции onPress. Если бы мы могли как-то сделать что-то в функции кнопки onPress () и скрыть элемент, то было бы здорово.
В чем тогда моя проблема?
Проблема не в том, что я не могу их отфильтровать. Фактически, моя текущая реализация отфильтровывает их. Но проблема заключается во времени между событием щелчка и скрытием элемента. Поскольку щелчок идет даже на firebase и добавляет объект (который добавляет доктора к объекту), он создает задержку в несколько миллисекунд. Я хотел бы скрыть элемент, как только он будет нажат, а в фоновом режиме я проверяю firebase, а что нет.
Database.followDoctor
? - person Alex Yuly   schedule 21.02.2018followDoctor
отфильтруйте его и обновите состояние перед переходом в firebase - person Matt Aft   schedule 22.02.2018