【问题标题】:React Native - Hide and Show Component on Button Click with AnimationReact Native - 在按钮单击时隐藏和显示组件并带有动画
【发布时间】:2018-01-10 13:33:27
【问题描述】:

朋友,当用户单击组件(视图)必须隐藏的按钮并再次单击应该显示的按钮时,我在运行时遇到了隐藏和显示的问题。

我的密码:

  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>
   )
}

我想喜欢下面的图片。

【问题讨论】:

    标签: reactjs react-native react-native-android react-native-ios react-animated


    【解决方案1】:

    使用react-native-collapsible-view。 它似乎完全可以满足您的需求。

    【讨论】:

      【解决方案2】:

      在构造函数中添加

      this.callFunc = this.callFunc.bind(this);
      

      在 onPress 中替换为

      {()=>{ this.callFunc(); }
      

      你可以在这里看到一个小例子:

      https://snack.expo.io/HkxpgSlPZ

      @+

      【讨论】:

      • 你不应该在你的render函数中编写箭头函数,否则每次调用渲染函数时都会分配一个新的箭头函数。更好的实现:在组件类中创建一个本地箭头函数,并将其引用到您的 onPress 属性中。
      • 这里有一个解释的来源:medium.freecodecamp.org/…
      【解决方案3】:

      你错过了函数绑定:

      constructor(props) {
          super(props);
      
          this.callFunc = this.callFunc.bind(this);
          ...
      }
      

      没有它,callFunc 将不在this 对象的范围内,并且无法访问其状态。

      正如@AlexanderIgnácz 所说,那里有一个错字-应该将this.isModalVisible 更改为this.state.isModalVisible。也许迟了,但我也想说,为了完成这个答案。

      【讨论】:

      • 我会尝试但不工作。该函数被调用并且只打开视图,但在第二次点击时它不会隐藏。
      • 关于动画,查看我关于卡片组件显示和隐藏的另一个答案。它可能对你有用。 stackoverflow.com/a/45428351/681830
      • 呃,联系我做什么?我们可以在这里提问/回答吗?
      • 问更多问题,我会尽力为您解答。不喜欢私下回答,那样别人得不到帮助。
      【解决方案4】:

      您还应该使用this.state.isModalVisible,而不是callFunc() 中的this.isModalVisible

      【讨论】:

      猜你喜欢
      • 2020-04-24
      • 2018-01-22
      • 2020-09-14
      • 1970-01-01
      • 2020-05-09
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多