실제로 상태를 변경하지 않고 redux 동작을 적용하려면 어떻게해야합니까?상태를 변경하지 않고 redux 동작에 반응하는 방법
기존 코드를 redux로 포팅합니다. 로그 아웃 버튼을 클릭하면 기존 함수 logout()
이 사용자를 로그 아웃하는 AJAX 요청을합니다. 그 요청이 실패 할 경우 이식 된 코드에서 alert('Logout failed');
호출 로그 아웃 버튼 redux-thunk
를 사용하여 구현되는 액션 제작자 호출
export function logout(email, pass, callback) {
return function(dispatch) {
axios.get('/logout')
.then(function(response) {dispatch({type: 'LOGOUT_SUCCESS'})})
.catch(function(error) {dispatch({type: 'LOGOUT_FAILURE', message: error.response.data})});
};
}
감속기는 LOGOUT_SUCCESS
작업을 처리하고있는 상태에서 사용자 객체를 삭제 똑바로. 하지만 실패 사례를 처리하고 alert()
을 시작해야합니까?
- 액션 작성자
alert()
를 호출 할 수 있지만, 어떻게 든 나는이 - 감속기는
alert()
를 호출하고 그냥 같은 상태를 반환 할 수있는 권리 장소가 아니다 느낌 ...하지만 나쁜 생각 감속기가해야하기 때문에 보인다 부작용이없는 순수한 기능이어야합니다. - 감속기는
{messages: ['Login failed']}
과 같은 상태를 반환 할 수 있으며 코드의 일부가 이에 대응할 수 있으며 경고를 던지고 상태에서 메시지를 제거하는 다른 작업을 호출합니다. 그러나 이것은 불필요하게 복잡해 보입니다.
이벤트를 통해 작업을 트리거하지만 상태를 변경하지 않으려는 경우에 적합한 패턴은 무엇이며 작업 작성자로부터 계속 나오고 싶습니까?