react native와 redux를 사용하여 로그인 페이지를 구현하고 있습니다. 내 감속기에 대한 샘플 코드는 다음과 같습니다. 세 가지 유형이 있습니다. types.SCHMIT_LOGIN, types.CHANGE_USERNAME, types.CHANGE_PASSWORD.react redux를 사용하여 상태가 변경되지 않았습니다.
CHANGE_USERNAME 및 CHANGE_PASSWORD이 (가) 정상적으로 작동합니다. 하지만 문제는 SUBMIT_LOGIN입니다. 비동기 상태 변경으로 인한 것 같습니다. 거기에 어쨌든 fetch() 메서드를 사용한 후 상태를 변경하려면 ??
export default function login(state = initialState, action = {}) {
switch (action.type) {
case types.SUBMIT_LOGIN: {
let loginStatus = false;
if (state.username != null && state.password != null
&& state.username.length > 0 && state.password.length > 0
&& state.username === state.password) {
loginStatus = true;
} else {
let updatedErrMsg = '';
fetch('https://staging-barrie.mpower.ca/mpower/mpp/weblogin2.action?username='+state.username+'&password='+state.password,
{
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',
},
}
)
.then((response) => response.json())
.then((responseJson) => {
if (responseJson.result === 'success') {
loginStatus = true;
} else {
loginStatus = false;
updatedErrMsg = 'Incorrect Username or Password.';
}
return {
...state,
isLoggedIn: loginStatus,
errorMsg: updatedErrMsg
};
});
}
return {
...state,
isLoggedIn: loginStatus
};
}
case types.CHANGE_USERNAME:
return {
...state,
username: action.username
};
case types.CHANGE_PASSWORD:
return {
...state,
password: action.password
};
default:
return state;
} 은}