首页 > 解决方案 > 我应该返回 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,所以我只是想确保我没有养成任何代价高昂的坏习惯。

标签: reactjs

解决方案


您不需要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);

推荐阅读