実際に状態を変更せずにレフィックスアクションを実行するにはどうすればよいですか?状態を変更せずにレビュックスアクションに反応する方法
既存のコードを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']}
のような状態を返す可能性があり、コードの他の部分がこれに反応する可能性があります。警告をスローし、状態からメッセージを削除する別のアクションを呼び出します。しかし、これは不必要に複雑なようです。
イベントを介してアクションをトリガーしたいが、状態を変更したくない場合、アクションクリエーターからそれを外したい場合はどんなパターンが当てはまりますか?