我是本机反应的新手,我在通过 facebook 图收到用户凭据后尝试调用导航器。任何帮助将不胜感激 :)
所以我有我的第一堂课,它设置了导航器和渲染场景。
class CupofDoom extends Component {
render() {
return (
<Navigator
style={{ flex: 1 }}
initialRoute={{ name: 'main' }}
renderScene={this.renderScene}
/>
);
}
renderScene(route, navigator) {
if(route.name == 'main') {
return <Main navigator={navigator} />
}
if(route.name == 'stats') {
return <Stats navigator={navigator} />
}
}
}
上面的代码将自动调用 Main 类。此类“如下所示”包含一个自定义 facebook 登录按钮,该按钮在单击时调用方法“handleFaceBookLogin()”。所以一切正常,直到我尝试运行 this.props.navigator.push({ name: 'stats',}) 它返回,无法读取属性'navigator'。请注意,如果我将 navigator 道具移到 Facebook Manager 登录之外,这将正常工作。
class Main extends Component {
handleFacebookLogin(routeName) {
LoginManager.logInWithReadPermissions(['public_profile', 'email', 'user_friends']).then(
function(result) {
if (result.isCancelled) {
console.log('Login cancelled');
}
else {
console.log('Login success with permissions: '
+result.grantedPermissions.toString());
const responseInfoCallback = (error, result) => {
if (error) {
console.log(error)
console.log('Error fetching data: ' + error.toString());
}
else {
test = result;
console.log(test.email);
this.props.navigator.push({
name: 'stats', // Matches route.name
})
}
}//response
const infoRequest = new GraphRequest(
'/me',
{
parameters: {
fields: {
string: 'picture,email,name,first_name,middle_name,last_name'
}
}
},
responseInfoCallback
);
// Start the graph request.
new GraphRequestManager().addRequest(infoRequest).start()
}//else
},//function result
function(error) {
console.log('Login fail with error: ' + error);
}//functionError
);//loginManager
}
render() {
return (
<Grid>
<Row size={2} style={styles.row1}>
<View style={styles.titleHolder}>
<Text style={styles.welcome}>
Cup of Doom <Icon active name='ios-cog' style={{color: '#ffffff'}}/>
</Text>
</View>
</Row>
<Row size={1} style={styles.row2}>
<View>
<Icon active name='ios-beer' style={{color: '#333333', fontSize: 100, textShadowColor: '#333333', textShadowOffset: {width: 1, height: 1}}}/>
</View>
</Row>
<Row size={1} style={styles.row3}>
<View style={styles.fbbutton}>
<Button bordered light block onPress={this.handleFacebookLogin.bind(this, "stats")}>
<Icon name="logo-facebook" />
<Text style={styles.text}>Login with Facebook</Text>
</Button>
</View>
</Row>
</Grid>
);
}
}
我还包括了 Stats 类以供参考。
class Stats extends Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>{email}</Text>
<TouchableHighlight onPress={()=>{this.props.navigator.pop()}}>
<Text>BACK</Text>
</TouchableHighlight>
</View>
);
}
}
我再次非常感谢任何建议/帮助。