Hide/Show components in react native

后端 未结 24 1997
囚心锁ツ
囚心锁ツ 2020-12-07 08:43

I\'m really new to React Native and I\'m wondering how can I hide/show a component.
Here\'s my test case:



        
相关标签:
24条回答
  • 2020-12-07 09:33

    You can use the conditions for show and hide the components

    constructor(){
    
        super();
    
        this.state ={
    
          isVisible:true
    
        }
      }
    
      ToggleFunction = () => {
    
        this.setState(state => ({
    
          isVisible: !state.isVisible
    
        }));
    
      };
    
      render() {
      
        return (
    
          <View style={styles.MainContainer}>
    
          {
    
            this.state.isVisible ? <Text style= {{ fontSize: 20, color: "red", textAlign: 'center' }}> Hello World! </Text> : null
          }
    
          <Button title="Toggle Visibility" onPress={this.ToggleFunction} />
    
          </View>
        );
      }
    
    0 讨论(0)
  • 2020-12-07 09:34

    Hide And Show parent view of Activity Indicator

    constructor(props) {
      super(props)
    
      this.state = {
        isHidden: false
      }  
    } 
    

    Hide and Show as Follow

    {
       this.state.isHidden ?  <View style={style.activityContainer} hide={false}><ActivityIndicator size="small" color="#00ff00" animating={true}/></View> : null
    }
    

    Full reference

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

    On Button presss set state as follow

    onSignupPress() {
      this.setState({isHidden: true})
    }
    

    When you need to hide

    this.setState({isHidden: false})
    
    0 讨论(0)
  • 2020-12-07 09:34

    If you need the component to remain loaded but hidden you can set the opacity to 0. (I needed this for expo camera for instance)

    //in constructor    
    this.state = {opacity: 100}
    
    /in component
    style = {{opacity: this.state.opacity}}
    
    //when you want to hide
    this.setState({opacity: 0})
    
    0 讨论(0)
  • 2020-12-07 09:39

    just use

    style={ width:0, height:0 } // to hide
    
    0 讨论(0)
  • 2020-12-07 09:39

    An additional option is to apply absolute positioning via styling, setting the hidden component in out-of-screen coordinates:

    <TextInput
        onFocus={this.showCancel()}
        onChangeText={(text) => this.doSearch({input: text})}
        style={this.state.hide ? {position: 'absolute', top: -200} : {}}
    />
    

    Unlike in some of the previous suggestions, this would hide your component from view BUT will also render it (keep it in the DOM), thus making it truly invisible.

    0 讨论(0)
  • 2020-12-07 09:40

    in render() you can conditionally show the JSX or return null as in:

    render(){
        return({yourCondition ? <yourComponent /> : null});
    }
    
    0 讨论(0)
提交回复
热议问题