反应本机传递值

时间:2017-08-05 20:23:26

标签: javascript react-native

我是React Native的新手,我在Google上搜索过但我只能找到旧版本的React Native。

实际上,我不知道如何将状态值传递给其他js文件 如果状态值'isValid'变为'true',我正在制作将重定向到tappage.js的Authpage

我打算在App.js上更改这样的页面,如果还有其他更好的方式,请告诉我。

谢谢,这是我的代码。 AuthManager.js

export default class AuthPage extends Component {
  constructor(props) {
    super(props);
    this.state = {
      user                    : null,
      firebaseUser            : null,
      fcmToken                : null,
      accessToken             : null,
      authType                : null,
      hasInitialNotification  : null,
      isValid                 : false
    };
    this.unsubscribe = null;

  }

...some codes..


render() {
    // if (!this.state.firebaseUser) {
      return (
        <Provider store={store}>
        <View style = {styles.main}>


        <View style ={styles.logotemp}>
        <Image style ={styles.logo}
        source={require('../../resources/logo/logo.png')}
        />

        </View>

        <View style = {styles.inputid}>


        <FormInput
        ref={(el)=> {this.email = el;}}
        textInputRef='email'
        placeholder = "Email"
        onChangeText={(email) => this.setState({email})}
        value = {this.state.email}
        />

        <FormInput
        ref={(el)=> {this.password = el;}}
        textInputRef='password'
        onChangeText={(password) => this.setState({password})}
        value = {this.state.password}
        placeholder = "Password"
        secureTextEntry = {true}
        />
        <TouchableOpacity onPress={this._emailSignIn.bind(this)}>
        <Image
        style = {styles.loginbut}
        source={require('../../resources/socialicon/signin.png')}
        />
        </TouchableOpacity>  

        </View>

        <View style = {styles.socialicons}>
        <TouchableOpacity onPress={this._facebookSignIn.bind(this)} >
        <Image 
        style={styles.fbicons}
        source={require('../../resources/socialicon/facebook.png')}
        />
        </TouchableOpacity>
        <Image
        style={styles.divider}
        source = {require('../../resources/socialicon/divider.png')}
        />

        <TouchableOpacity onPress={this._googleSignIn.bind(this)} >
        <Image
        style={styles.ggicons}
        source={require('../../resources/socialicon/google.png')}
        />
        </TouchableOpacity>  

        </View>    
        </View>

        </Provider>
      );
    // }

    if (this.state.firebaseUser) {
      return(
        <Provider store = {store}>
        {store.isValid = this.state.isValid}
        </Provider>
      );
    }
  }

export default class MainPage extends Component {
  constructor(props) {
    super(props);
  }

  componentDidMount() {

  }



  render() {
    alert(store.isValid);
    if(!this.props.isValid){
      return(<View style={{flex:1}}>

         <AuthPage></AuthPage> 

        </View>


      );
    }

    if(isValid){
    return(
        <View style={{flex:1}}>

         <TabPage></TabPage>

        </View>
      );
    }




  }
}
谢谢!!

1 个答案:

答案 0 :(得分:1)

React中的习语是只有当前元素才能知道它的状态。 我强烈建议您使用Redux进行组件之间的全局数据传输,或者,如果您不需要同步数据,则可以使用AsyncStorage

相关问题