我对React Native真的很陌生,我想知道如何隐藏/显示组件。
下面是我的测试用例:
<TextInput
onFocus={this.showCancel()}
onChangeText={(text) => this.doSearch({input: text})} />
<TouchableHighlight
onPress={this.hideCancel()}>
<View>
<Text style={styles.cancelButtonText}>Cancel</Text>
</View>
</TouchableHighlight>
我有一个TextInput组件,我想要的是在输入得到焦点时显示TouchableHighlight,然后在用户按下取消按钮时隐藏TouchableHighlight。
我不知道如何“访问”TouchableHighlight组件,以便隐藏/显示它在我的函数showCancel/ hideccancel中。
此外,我如何从一开始就隐藏按钮?
显示\hide组件的三种方法:
——类组件 : / ------------------------------------------------------------------------------------------------------------
在我使用的所有例子中,如下所示:
.
...
constructor(props) {
super(props);
this.state = {showComponent: true};
}
1. 使用展示道具
<View display={this.state.showComponent ? 'flex' : 'none'} />
2. 使用有风格的显示道具
<View style={{display:this.state.showComponent ? 'flex' : 'none'}} />
3.限制呈现
{
this.state.showComponent &&
<View /> // Or <View> ... </View>
}
——功能组件 :/ ------------------------------------------------------------------------------------------------------------
在我使用的所有例子中,如下所示:
const [showComponent, setShowComponent] = useState(true);
1. 使用展示道具
<View display={showComponent ? 'flex' : 'none'} />
2. 使用有风格的显示道具
<View style={{showComponent ? 'flex' : 'none'}} />
3.限制呈现
{
showComponent &&
<View /> // Or <View> ... </View>
}
我需要在两幅图像之间切换。在它们之间进行条件切换时,有5秒的延迟,没有图像显示。
我使用的方法来自被否决的amos答案。因为很难用适当的格式将代码放入注释中。
显示功能:
<View style={styles.logoWrapper}>
<Image
style={[styles.logo, loading ? styles.hidden : {}]}
source={require('./logo.png')} />
<Image
style={[styles.logo, loading ? {} : styles.hidden]}
source={require('./logo_spin.gif')} />
</View>
风格:
var styles = StyleSheet.create({
logo: {
width: 200,
height: 200,
},
hidden: {
width: 0,
height: 0,
},
});
实际上,在iOS开发中,通过react-native,当我使用display: 'none'或如下所示:
const styles = StyleSheet.create({
disappearImage: {
width: 0,
height: 0
}
});
iOS不加载任何其他的图像组件,如onLoad或等,所以我决定使用如下:
const styles = StyleSheet.create({
disappearImage: {
width: 1,
height: 1,
position: 'absolute',
top: -9000,
opacity: 0
}
});