javascript - 当函数名是保留字时,如何使用 Redux Saga “调用”函数,以及如何进行链式函数调用?
问题描述
yield action.user.delete() && database.ref(url).remove()
我需要call()
使用 Firebase 函数在 redux-sagas 中的两个函数中使用。在action.user.delete()
, 我不能做
yield {delete} = action.user
or call([action.user, delete])
,因为delete
是保留字。而且database.ref(url).remove()
,我不知道如何使用call()
链式函数。
解决方案
有几个语法选项可以处理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"]);
};
推荐阅读
- python - 熊猫:带有平均值的数字列fillna和带有模式的字符列fillna
- android - Android资源链接失败.....错误:链接引用失败
- gerrit - Cherry 在评论 Gerrit 中挑选补丁列表
- operator-keyword - 如何使用三元运算符返回一个确定的值或一段代码
- mongodb - Mongoose如何使用位置运算符从具有特定条件的双嵌套数组中提取,并返回新结果
- javascript - 如果嵌套在表单中的按钮和 div 被重新呈现,则提交自动触发
- firebase - 在 console.log 或警报中显示 firebase 推送通知?
- vue.js - 在组件内显示子级
- vb.net - Outlook VBA 附件
- c - C - 数组函数评估