2016-03-19 8 views
0

Логин - это первый маршрут каждый раз.Как вызвать функцию обратной связи, начальный маршрут, определенный в реакции native.?

Я хочу показать вкладку, если вход в систему. В противном случае я хочу перейти на страницу входа.

class blabla extends Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
     user: null 
     } 
    } 
    componentDidMount(){ 
    var _this = this; 
     FBLoginManager.getCredentials(function(error, data){ 
     if (!error) { 
      _this.setState({ user : data.credentials }); 
     } else { 
      _this.setState({ user : null }); 
     } 
     }); 
    } 
    render() { 
    console.log(this.state.user) 
    // 1. render -> null 
    // 2. render -> data 
    return (
     <NavigatorIOS ref="navigator" 
     style={styles.nav} 
     initialRoute={{ 
      title: "blabla", 
      component: this.state.user != null ? TabPage : Login, 
     }} /> 
    ); 
    } 
} 

решаемых этой проблемы, я использую два раз заявление и заменить синтаксис ES6 кода ES5, потому что я не знаю, использовать if(!_this.isMounted()) return; в синтаксисе ES6.

getInitialState: function(){ 
    return { 
     credentials: undefined, 
     load:true 
    }; 
    }, 


    componentDidMount: function(){ 
    var _this = this; 
    FBLoginManager.getCredentials(function(error, data){ 
     if(!_this.isMounted()) return; 
     if (!error) { 
     _this.setState({ credentials : data.credentials,load:false }); 
     } else { 
     _this.setState({ credentials : false,load:false }); 
     } 
    }); 
    }, 

    render: function() { 
    if (this.state.load) { 
     return <View style={{flex:1,justifyContent:"center"}}><Text style={{textAlign:"center"}}>loading...</Text></View> 
    } 
    return <NavigatorIOS ref="nav" 
     style={{flex:1}} 
     navigationBarHidden={false} 
     rightButtonTitle="Profile" 
     onRightButtonPress= {() => this.left()} 
     initialRoute={{ 
      title: "AnsApp", 
      component: this.state.credentials != undefined && this.state.credentials != false ? TabPage : Profile , 
     }} /> 
    }, 
+1

Вы должны поместить свое решение в ОТВЕТ, а не в вопрос. Затем вы можете принять ответ, и проблема будет отмечена как разрешенная ..... –

ответ

0

Надеюсь, это вам поможет. Это суббота, и я много работаю над своим портфолио, но я сделал некоторые улучшения и прояснил некоторые части. Не стесняйтесь спрашивать меня, есть ли у вас вопросы: смайлик:

class blabla extends Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
     user: null , 
     loggedInn: !true 
     } 
    } 
    componentDidMount(){ 
    var _this = this; 
     FBLoginManager.getCredentials(function(error, data){ 
     if (this.state.loggedInn = !true) { 
      _this.setState({ user : data.credentials }); 
     } 
      return this.state; 
     }); 
    }, 
    Logon() { 
    // your this.state validation 
    } 
    render() { 
    console.log(this.state.user) 
    // 1. render -> null 
    // 2. render -> data 
    return (
     <NavigatorIOS ref="navigator" 
     style={styles.nav} 
     initialRoute={{ 
      title: "blabla", 
      component: this.state == Logon ? TabPage : Login, 
     }} /> 
    ); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^