我对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中。
此外,我如何从一开始就隐藏按钮?
隐藏并显示活动指示器的父视图
constructor(props) {
super(props)
this.state = {
isHidden: false
}
}
像跟着一样隐藏和显示
{
this.state.isHidden ? <View style={style.activityContainer} hide={false}><ActivityIndicator size="small" color="#00ff00" animating={true}/></View> : null
}
全部参考
render() {
return (
<View style={style.mainViewStyle}>
<View style={style.signinStyle}>
<TextField placeholder='First Name' keyboardType='default' onChangeFirstName={(text) => this.setState({firstName: text.text})}/>
<TextField placeholder='Last Name' keyboardType='default' onChangeFirstName={(text) => this.setState({lastName: text.text})}/>
<TextField placeholder='Email' keyboardType='email-address' onChangeFirstName={(text) => this.setState({email: text.text})}/>
<TextField placeholder='Phone Number' keyboardType='phone-pad' onChangeFirstName={(text) => this.setState({phone: text.text})}/>
<TextField placeholder='Password' secureTextEntry={true} keyboardType='default' onChangeFirstName={(text) => this.setState({password: text.text})}/>
<Button style={AppStyleSheet.buttonStyle} title='Sign up' onPress={() => this.onSignupPress()} color='red' backgroundColor='black'/>
</View>
{
this.state.isHidden ? <View style={style.activityContainer}><ActivityIndicator size="small" color="#00ff00" animating={true}/></View> : null
}
</View>
);
}
在按钮上按下设置状态如下所示
onSignupPress() {
this.setState({isHidden: true})
}
当你需要躲藏的时候
this.setState({isHidden: false})
显示\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>
}
checkincheckout = () => {
this.setState({ visible: !this.state.visible })
}
render() {
return (
{this.state.visible == false ?
<View style={{ alignItems: 'center', flexDirection: 'row', marginTop: 50 }}>
<View style={{ flex: 1, alignItems: 'center', flexDirection: 'column' }}>
<TouchableOpacity onPress={() => this.checkincheckout()}>
<Text style={{ color: 'white' }}>Click to Check in</Text>
</TouchableOpacity>
</View>
</View>
:
<View style={{ alignItems: 'center', flexDirection: 'row', marginTop: 50 }}>
<View style={{ flex: 1, alignItems: 'center', flexDirection: 'column' }}>
<TouchableOpacity onPress={() => this.checkincheckout()}>
<Text style={{ color: 'white' }}>Click to Check out</Text>
</TouchableOpacity>
</View>
</View>
}
);
}
这一切。享受你的编码……