首页 > 解决方案 > Redux Saga 观察者差异

问题描述

这个 Sagas 观察者之间有什么区别:

export function* authWatcher() {
  yield [
    takeLatest(GET_USER_START, getUser),
    takeLatest(EDIT_USER_START, editUser),
    takeLatest(FORGOT_PASSWORD_START, forgotPassword),
    takeLatest(LOGOUT_START, logout)
  ];
}

和:

export function* authWatcher() {
  yield fork(takeLatest, GET_USER_START, getUser);
  yield fork(takeLatest, EDIT_USER_START, editUser);
  yield fork(takeLatest, FORGOT_PASSWORD_START, forgotPassword);
  yield fork(takeLatest, LOGOUT_START, logout);
}

起初,他们做同样的事情,但我不知道哪种方法是最好的。有没有更好的办法?

我看到的另一件事 takeLatest 似乎不起作用。但是不知道有没有关系。

标签: javascriptreactjsreduxreact-reduxredux-saga

解决方案


takeEvery并且已经在内部takeLatest使用fork,因此不需要将其包装在另一个叉子中。

在较新的 redux-saga 版本中不推荐使用产生一系列效果。改为使用all效果。

export function* authWatcher() {
  yield all([
    takeLatest(GET_USER_START, getUser),
    takeLatest(EDIT_USER_START, editUser),
    takeLatest(FORGOT_PASSWORD_START, forgotPassword),
    takeLatest(LOGOUT_START, logout)
  ]);
}

推荐阅读