React Native - 使用动画在按钮单击时隐藏和显示组件
React Native - Hide and Show Component on Button Click with Animation
朋友,当用户单击组件(视图)必须隐藏的按钮并再次单击它应该显示的按钮时,我在运行时隐藏和显示时遇到问题。
我的代码:
constructor(props) {
super(props);
this.state = {
isModalVisible : false,
};
}
callFunc(){
if(this.isModalVisible){
this.setState({isModalVisible:false});
}else{
this.setState({isModalVisible:true});
}
}
render() {
return (
<View style = {styles.companyScroll}>
<Button
onPress={this.callFunc}
title="Learn More"
color="#841584"
accessibilityLabel="Learn more about this purple button"
/>
{this.state.isModalVisible && <Picker style ={{backgroundColor : 'white'}}
selectedValue={this.state.language}
onValueChange={(itemValue, itemIndex) => this.setState({language: itemValue})}>
<Picker.Item label="Java" value="java" />
<Picker.Item label="JavaScript" value="js" />
</Picker>
</View>
)
}
我要点赞下图
您错过了函数绑定:
constructor(props) {
super(props);
this.callFunc = this.callFunc.bind(this);
...
}
没有它,callFunc
将不在 this
对象的范围内并且无法访问其状态。
正如@AlexanderIgnácz 所说,这里有一个错字——应该将 this.isModalVisible
改为 this.state.isModalVisible
。也许晚了,但也是我要说的,为了完成这个答案。
您还应该使用 this.state.isModalVisible
而不是 callFunc()
中的 this.isModalVisible
。
在构造函数中添加
this.callFunc = this.callFunc.bind(this);
在 onPress 中替换为
{()=>{ this.callFunc(); }
你可以在这里看到一个小例子:
https://snack.expo.io/HkxpgSlPZ
@+
使用react-native-collapsible-view。
它似乎完全符合您的需求。
朋友,当用户单击组件(视图)必须隐藏的按钮并再次单击它应该显示的按钮时,我在运行时隐藏和显示时遇到问题。
我的代码:
constructor(props) {
super(props);
this.state = {
isModalVisible : false,
};
}
callFunc(){
if(this.isModalVisible){
this.setState({isModalVisible:false});
}else{
this.setState({isModalVisible:true});
}
}
render() {
return (
<View style = {styles.companyScroll}>
<Button
onPress={this.callFunc}
title="Learn More"
color="#841584"
accessibilityLabel="Learn more about this purple button"
/>
{this.state.isModalVisible && <Picker style ={{backgroundColor : 'white'}}
selectedValue={this.state.language}
onValueChange={(itemValue, itemIndex) => this.setState({language: itemValue})}>
<Picker.Item label="Java" value="java" />
<Picker.Item label="JavaScript" value="js" />
</Picker>
</View>
)
}
我要点赞下图
您错过了函数绑定:
constructor(props) {
super(props);
this.callFunc = this.callFunc.bind(this);
...
}
没有它,callFunc
将不在 this
对象的范围内并且无法访问其状态。
正如@AlexanderIgnácz 所说,这里有一个错字——应该将 this.isModalVisible
改为 this.state.isModalVisible
。也许晚了,但也是我要说的,为了完成这个答案。
您还应该使用 this.state.isModalVisible
而不是 callFunc()
中的 this.isModalVisible
。
在构造函数中添加
this.callFunc = this.callFunc.bind(this);
在 onPress 中替换为
{()=>{ this.callFunc(); }
你可以在这里看到一个小例子:
https://snack.expo.io/HkxpgSlPZ
@+
使用react-native-collapsible-view。 它似乎完全符合您的需求。