使用 Saga 动作作为 if 语句的条件
Use an Saga action as condition for an if statement
我实际上正在尝试将 redux-saga 实现到我的应用程序中。为了在开始时保持简单,我尝试先将 saga 添加到我的登录组件中。
但是我正在努力添加一个 if 语句,如果我的登录操作 loginSuccess()
被调度,该语句将 UI 重定向到一个页面。我想像下面的注释语句那样实现 smth:
const onSubmitForm = (e?: React.FormEvent<HTMLFormElement>) => {
if (e) {
e.preventDefault();
}
dispatch(actions.submitLogin());
// if (actions.loginSuccess() && !actions.loginError) {
// history.push('/');
// }
};
动作是如何传递的:
// After the API was fetched:
if (response.message === 'login') {
yield put(actions.loginSuccess());
} else {
yield put(actions.loginError('Username or password is incorrect'));
}
您将在 reducer 中处理“loginSuccess”操作以更改您的状态,或者可能由另一个 saga 监听 loginSuccess 操作以在用户登录时执行各种其他操作。例如获取用户数据、重定向位置等
我实际上正在尝试将 redux-saga 实现到我的应用程序中。为了在开始时保持简单,我尝试先将 saga 添加到我的登录组件中。
但是我正在努力添加一个 if 语句,如果我的登录操作 loginSuccess()
被调度,该语句将 UI 重定向到一个页面。我想像下面的注释语句那样实现 smth:
const onSubmitForm = (e?: React.FormEvent<HTMLFormElement>) => {
if (e) {
e.preventDefault();
}
dispatch(actions.submitLogin());
// if (actions.loginSuccess() && !actions.loginError) {
// history.push('/');
// }
};
动作是如何传递的:
// After the API was fetched:
if (response.message === 'login') {
yield put(actions.loginSuccess());
} else {
yield put(actions.loginError('Username or password is incorrect'));
}
您将在 reducer 中处理“loginSuccess”操作以更改您的状态,或者可能由另一个 saga 监听 loginSuccess 操作以在用户登录时执行各种其他操作。例如获取用户数据、重定向位置等