Существует несколько опций синтаксиса для работы с delete
как зарезервированным словом:
- Передать строку для имени функции в метод
call
- Получить ссылку на функцию
delete
в переменной с другим именем
Оба варианта показаны ниже.
Для связанных функций вы просто разбиваете цепочку на отдельные вызовы и используете результат одного вызова для выполнения следующего вызова. Я включил пример выполнения цепных вызовов после двух delete
примеров.
import { call } from "redux-saga/effects";
const refResponse = {
remove: () => {
console.log("You removed me!");
}
};
const action = {
user: {
delete: () => {
console.log("You deleted me!");
}
}
};
const database = {
ref: () => {
console.log("Returning ref");
return refResponse;
}
};
export const starter = function*() {
console.log("before call");
yield call([action.user, "delete"]);
console.log("after call using string for function name");
const deleteFunc = action.user.delete;
yield call([action.user, deleteFunc]);
console.log("after call using function variable");
console.log("before start of chained call");
const result = yield call([database, "ref"]);
console.log("before 2nd part of chained call");
yield call([result, "remove"]);
};
![Edit 9470nnlwmy](https://codesandbox.io/static/img/play-codesandbox.svg)