今天我在我的本机应用中遇到了一个提取问题。我希望我的用户在注册后直接登录。为了做到这一点,我有一个函数来获取signUp,另一个函数来获取登录。问题是在视图中我单击register()按钮时,只调用signUp fetch。但是,如果我再次单击该按钮,则会调用注册和登录提取,但注册时会发生错误,因为用户已添加到数据库中。所以,我希望能够一个接一个地连接两个fetch。这是我的代码:
api助手类:
const Api = {
signUp(user) {
return new Promise((resolve, reject) =>
{
console.log(Constant.default.apiUrl);
fetch(Constant.default.apiUrl + '/signup', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(user)
})
.then(response => response.json())
.then(responseJson => {
if (responseJson.success) {
console.log(responseJson.userData);
resolve(responseJson.userData);
} else {
reject(responseJson);
}
})
.catch(err => console.log(err));
});
},
login(user) {
return new Promise((resolve, reject) => {
fetch(Constant.default.apiUrl + '/login', {
method : 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(user)
})
.then(response => response.json())
.then(responseJson => {
console.log("responsejson " + responseJson);
console.log("laaaa");
if (responseJson.success) {
resolve(responseJson.userData);
} else {
reject(responseJson);
}
})
.catch(err => console.log("catch login" + err))
})
}
};
export default Api;
寄存器功能(当我点击注册按钮时):
register () {
if (this.state.password.length > 3 && this.state.password === this.state.confirmPassword) {
var user = {
firstName: this.props.firstName,
lastName: this.props.lastName,
emailAddress: this.state.emailAddress,
password: this.state.password,
};
Api.signUp(user)
.then(result => {
console.log("sign up result : " + JSON.stringify(result));
return {
emailAddress : user.emailAddress,
password : user.password
};
})
.then(loginUser => {
Api.login(loginUser)
.then(result => {
console.log("login result " + JSON.stringify(result));
})
.catch(resultErr => console.log(resultErr));
})
.catch(resultErr => console.log(resultErr));
} else {
this.setState({error: true,
errorMessage: 'Veuillez remplir les champs correctement'});
}
};
请帮我弄清楚为什么我必须在注册()按钮上单击两次。
提前感谢您的回答:)