javascript - 无法从逻辑或 || 返回箭头函数
问题描述
我有一个场景,我可能不知道是否定义了某个对象属性。如果是,它应该是一个函数,并且应该被调用。如果未定义,则创建备份函数。我这样做是合乎逻辑的||
:
// handleGetData may be undefined:
const { handleGetData, ActionCreators } = fromSomewhere;
const getData =
handleGetData ||
function () {
dispatch(
ActionCreators.GetData({
params: params
})
);
};
getData()
这似乎工作得很好,除了 eslint 抱怨 anUnexpected unnamed function
但是当我尝试在 之后返回箭头函数时语法中断||
:
const getData =
handleGetData ||
() => { // <------ Parsing error: Expression expected
dispatch(
ActionCreators.GetData({
params: params
})
);
};
为什么是这样?如果handleGetData
未定义,getData
则 then 的值不应该成为箭头函数,并且仍然可以调用吗?
显示问题的 Codesandbox
解决方案
在函数周围加上括号将解决语法错误:
const getData =
handleGetData ||
(() => {
dispatch(
ActionCreators.GetData({
params: params,
})
);
});
eslint 错误很可能是由规则引起的(有关详细信息,func-names
请参阅此链接)。您可以通过添加函数名称来修复它,例如handleGetDataFallback
:
const getData2 =
handleGetData ||
function handleGetDataFallback () {
dispatch(
ActionCreators.GetData({
params: params,
})
);
};
推荐阅读
- android - 有没有更好的方法在 android 中使用 rxjava 实现单一事实源
- controls - Elementor Widget - 中继器响应边距控制不起作用
- ios - 找不到“反应/RCTUtils.h”文件
- java - POI 和 XMLBeans 冲突
- python-3.x - 使用不同的线程显示图像时程序执行冻结
- bash - 如何在 bash 中获得更具可读性的 for 循环?
- sqlite - 如何使用 Sqflite 从相关表中建模和加载数据
- javascript - 更改时输入值未在页面上更新
- javascript - 如何重置当前未呈现的表单 - 如何以正确的方式重置它
- jsp - request.getParameter 为空