我有问题。登录后我无法导航至HomeScreen
。
有错误:
未处理的承诺拒绝(id:0):TypeError:未定义不是对象(正在评估'_this.props.navigation.navigate')。
这是我的代码:
_submitLogin = () => {
this.setState({ isLoading: true });
if(!this.state.nim || !this.state.password) {
this._handleError('Please enter your NIM and Password');
} else {
axios({
method: 'post',
url: 'http://192.168.43.114/api.connectUBK/auth',
data: {
nim: this.state.nim,
password: this.state.password
}
}).then((response) => {
if(response.data.status === 'Failed'){
this._handleError(response.data.message);
} else {
this._makeSession(response.data.user);
}
}).catch((error) => {
this._handleError('Failed to access ConnectUBK');
});
}
};
_makeSession = async (session) => {
const user = JSON.stringify(session);
await AsyncStorage.setItem('user', user);
this.props.navigation.navigate('AuthLoading');
}
_handleError = (message) => {
this.setState({ isLoading: false });
ToastAndroid.showWithGravity(
message,
ToastAndroid.SHORT,
ToastAndroid.CENTER
);
};
_renderButton = () => {
if(this.state.isLoading) {
return <ActivityIndicator color='white' size='large' />;
}
return (
<TouchableOpacity style={styles.buttonContainer} onPress={this._submitLogin}>
<Text style={styles.buttonText}>Login</Text>
</TouchableOpacity>
);
};
请帮助我。 我被卡住了
答案 0 :(得分:2)
您是否正在将this.props.navigation.navigate作为道具传递给您向我们展示的组件?似乎您必须添加它,所以它失败了。您需要将navigation.navigate添加为组件的道具。
答案 1 :(得分:1)
为此问题,请在axios调用之外定义变量。
let self = this; // declared var
axios.get(url)
.then(function (response) {
self.props.navigation.navigate("Home") // use that var
}
else{
Alert.alert("Invalid Username and Password")
}
})