技巧
节流(Throtting)
import { throttle } from 'redux-saga/effects'
function* handleInput(input) {
// ...
}
function* watchInput() {
yield throttle(500, 'INPUT_CHANGED', handleInput)
}防抖动(Debouncing)
/**
* @description 查询用户列表
*/
export function* fetchUsers() {
yield delay(500)
const {list}: PagesResult<User> = yield call(fetchUsersApi);
yield put(setUsers(list));
}
function* watchFetchUsers() {
let fetchUserTask: Task | undefined;
while (true) {
yield take(fetchUsersSagaAction)
if (fetchUserTask) {
yield cancel(fetchUserTask)
}
fetchUserTask = yield fork(fetchUsers)
}
}
function* watchFetchUsers() {
let fetchUserTask: Task | undefined;
while (true) {
yield take(fetchUsersSagaAction)
if (fetchUserTask) {
yield cancel(fetchUserTask)
}
fetchUserTask = yield fork(fetchUsers)
}
}
export default function* userSaga() {
yield watchFetchUsers();
}最后更新于