1
以下の非同期関数を使用して、有効なユーザー資格情報をRESTサービス経由で検証しています。非同期関数の設定状態を
async doesLoginExist(regCode) {
if (loginCode.match(loginCodePattern)) {
try {
await LoginService.getUserByLoginCode();
return {};
} catch (err) {
if (err.status === 404) {
return {
error: 'Your login code is not recognized.', success: null
};
}
return {
error: 'Service is temporarily unavailable.', success: null
};
}
}
return {};
}
ただし、この関数内で何らかの状態を設定しようとすると、
async doesLoginExist(regCode) {
await this.setState({ canProceed: false });
if (loginCode.match(loginCodePattern)) {
try {
await LoginService.getUserByLoginCode();
await this.setState({ canProceed: true });
return {};
} catch (err) {
if (err.status === 404) {
return {
error: 'Your login code is not recognized.', success: null
};
}
return {
error: 'Service is temporarily unavailable.', success: null
};
}
}
return {};
}
もはや正しく画面上に表示する検証メッセージとして使用されてしまうの発信者に私の{エラー、成功}オブジェクトを返していないようにみえます。別の小さな問題は、ログイン・コードが入力されたテキスト・ボックス入力のautoFocusも機能しないことです。
この機能の中で状態を設定する必要がありますか?
なぜthis.setStateで待っていますか? – linasmnew
うん、それは必要ないと思う。しかし、私はそれを取り出すときに同じ問題。 – deanmau5
あなたは問題を十分に明確に説明していませんが、「もはや私の{エラー、成功}の意味を正しく返していないようです」 – linasmnew