Логин - это первый маршрут каждый раз.Как вызвать функцию обратной связи, начальный маршрут, определенный в реакции 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 ,
}} />
},
Вы должны поместить свое решение в ОТВЕТ, а не в вопрос. Затем вы можете принять ответ, и проблема будет отмечена как разрешенная ..... –