reactjs - 我应该返回 true 以清除 .map() 期望在箭头函数警告结束时返回一个值吗?
问题描述
我正在学习 React,我收到了这个警告:
Array.prototype.map() 期望在箭头函数 array-callback-return 的末尾返回一个值
我通过return true
在语句之外添加一个来清除它if/else if
,即:
arr.map(foo => {
if (foo.attr === 'someKey') {
return baz
} else if (foo.attr === 'someOtherKey') {
return bar
}
return true //adding this return value clears the warning
})
这会产生任何问题,或者这是清除该警告的好方法吗?我正在学习 React,所以我只是想确保我没有养成任何代价高昂的坏习惯。
解决方案
您不需要return true
为您的一段代码。你可以用不同的方式编写你的回调实现,这样你的 linter 就不会给你错误的警告
arr.map(foo => {
if (foo) {
return baz;
}
return bar;
})
在上面的代码中,return bar
只有在为 false 时才会执行,if condition
否则您的代码将提前返回并且无法到达return bar
更新:
如果您有 if-else-if 规则,您可以从 map 函数返回 undefined 并使用filter(Boolean)
. 需要您映射需要返回一些东西,如果您的条件都没有映射,则指定返回值
arr.map(foo => {
if (foo.attr === 'someKey') {
return baz
} else if (foo.attr === 'someOtherKey') {
return bar
}
return;
}).filter(Boolean);
推荐阅读
- python - tkinter 无法在 PyCharm 中找到图像
- reactjs - 无效的 Hook 调用——我的第一个 React 函数
- sprite - 如何使用精灵表使伪元素具有正确的大小?
- c# - 包含两个对象和一个布尔值的字符串的 JsonSchema 验证?
- sorting - 对地图进行排序
按值然后按键 - javascript - 在一次操作中更改元素属性(数据集) - 避免回流
- azure-ad-b2c - B2C - 服务条款和社交登录 - 如何防止 AzureB2C 在每次用户通过 IDP 登录时始终要求检查服务条款
- java - Spring Boot REST Api - 响应数据未显示使用实体类之间的 1:M 关系的预期结果
- python - 如何从 2 个列表创建一个 numpy 数组
- node.js - Node.js 应用程序 nodemailer/mailgun 传输在托管时不起作用