- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我得到一个元素对象,我通过 map 循环并渲染它。当我单击其中一个列表时,我希望该元素在渲染中隐藏。
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>
) })
因此,当 onPress 调用 Database.followDoctor()
时。该元素应该隐藏。不是整个列表。如何才能实现这一目标?
我来自 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 检查等等。
最佳答案
我认为您需要将其从列表中过滤掉。在名为 visible
的对象中创建一个 bool 值,并在 map
之前应用 filter
方法 - 类似于:
然后,当您调用
Object.keys(this.state.doctors).filter(uid => uid.visible).map((uid, i) => { return (Database.followDoctor()
时,您会切换该标志。
如果您不希望这些标志存储在数据库中,则可以在从数据库加载时将它们添加到数据中(最初设置为true),并在保存之前删除它们。
关于javascript - 如何在React Native onPress中隐藏 map 函数中的单个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48914013/
我有以下 flatlist 渲染方法,在点击列表项时,它将调用 this._onPress 方法: render() { return (
我正在使用很棒的组件来自Native Base 。 import React, { Component } from 'react' import {View, Picker, Text, Butto
我正在做一个更大的项目,但不知道为什么这个小部分让我花了将近一整天的时间。 import 'package:flutter/material.dart'; void main() { runApp
我刚刚将我的 react-native 项目移植到 typescript 并且有一个关于函数作为 Prop 的问题 我通过: this.props.navigation.navigate("Card
我已经实现了教程中的 React Navigation 示例 https://reactnavigation.org/docs/intro/而且效果很好。 navigate('Chat')} t
我从RaisedButton创建了一个扩展类。传递onPressed参数时,该类拒绝说驱动器为空。 类 class VecRaisedButton extends RaisedButton { V
我正在制作简单的自定义文本按钮 SizedBox( height: 40, child: Material( color: Colors.transparent
onPressed 错误尝试传递 onPressed 函数但出现错误。 错误 - 无法将参数类型“Function”分配给参数类型“void Function()?”。 class CircleBut
onPressed 错误尝试传递 onPressed 函数但出现错误。 错误 - 无法将参数类型“Function”分配给参数类型“void Function()?”。 class CircleBut
RESET 我在上面看到的代码中使用了可触摸的不透明度。当我更改状态 working_pressure 但不按下按钮时,控制台会记录状态。问题是按下按钮时,根本没有记录任何内容。 我的最
我的应用程序中有这个聊天屏幕,我在旁边的 button 及其 onPress() 的帮助下发送消息, 代码如下: import React, { Component } from "react"; i
正在学习native React并学习更多关于javascript的知识,所以我仍然不明白关于它的行为的很多事情。我使用 TouchableOpacity 及其 onPress 属性创建了一个按钮组件
我正在尝试为我使用 Flutter 创建的游戏实现 onPressed 函数。如果我使用 RaisedButton 然后 onPressed 工作,但因为我想要一个图像然后我必须使用 Material
我需要在下面的图标上插入 onpressed() 函数(导航器推送到其他页面): Column buildButtonColumn(IconData icon, String label) {
我有这个容器: new Container( width: 500.0, padding: new EdgeInsets.fromLTRB(20.0, 40.0, 20.0, 40
我正在尝试使用 onPressed 切换到 Flutter 项目中的不同屏幕,但它没有生成任何结果,不确定是什么原因。 这是主屏幕页面:
我的平面列表中有一些按钮,如下所示 const renderItem = ({ item }) => ; const Item = ({ name, slug }) => { return
我在 React Native 上处理 onPress 事件。第一次,我写了那个代码: =this.props.minimum) ? this.props.onDecrement
我如何实现这种效果?单击日期后,我想扩展我的 AppBar。 最佳答案 最简单的方法是设置一个变量,然后改变 bottom 的高度。小部件。 Scaffold( appBar: AppBa
我已经使用 Flutter 大约 8 周了。 太棒了,毫无疑问。 然而,自从我开始以来,一直有一些问题困扰着我,那就是为什么有些小部件有 onTap方法而其他人有 onPressed ?谷歌无法给我任
我是一名优秀的程序员,十分优秀!