首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >箭头函数不应返回赋值Eslint

箭头函数不应返回赋值Eslint
EN

Stack Overflow用户
提问于 2020-04-17 00:49:29
回答 4查看 6.2K关注 0票数 4

我正在映射一个从API返回的值,并在不存在值的情况下添加一个虚拟值作为防御代码。为此,我使用JS来获得结果。但是不幸的是,我得到了Arrow function should not return assignment错误。在这里,我分享我所实现的代码。请检查并建议我最好的解决方案。我不想禁用eslint错误。提前谢谢。

代码:

代码语言:javascript
运行
复制
 const chartData = res.data.map(
    (data) => data.latestMetric = data.latestMetric === null ? dummyLatestMetric : data.latestMetric
  );

错误:

Arrow function should not return assignment. eslint (no-return-assign)

EN

回答 4

Stack Overflow用户

发布于 2020-04-17 00:58:27

箭头函数

箭头函数表达式是正则函数表达式的语法紧凑替代,尽管它没有自己的绑定到这个、参数、超级或new.target关键字。箭头函数表达式不适合作为方法,它们不能用作构造函数。

映射函数

map()方法创建一个新数组,该数组中填充了对调用数组中的每个元素调用提供的函数的结果。

.map()函数将要求您为每次迭代返回一个值。如果只想通过数组循环来产生副作用,则可以考虑使用forEach或其他循环函数。

在您的例子中,我看到您希望有条件地修改latestMetric中的res.data,您可以这样做:

代码语言:javascript
运行
复制
const chartData = res.data.map(data => ({
  ...data,
  latestMetric: data.latestMetric === null ? dummyLatestMetric : data.latestMetric,
});

扩展语法将把data属性扩展到一个新的对象中,然后根据条件有条件地设置latestMetric的值。

如果不想使用spread语法,也可以使用传统的Object.assign方法:

代码语言:javascript
运行
复制
const chartData = res.data.map(data => Object.assign({}, data, {
  latestMetric: data.latestMetric === null ? dummyLatestMetric : data.latestMetric,
});

关于您的防御策略,您可能对使用||语法感兴趣,但是在验证的所有错误值(包括:false0nullundefined等)时要小心。

代码语言:javascript
运行
复制
const chartData = res.data.map(data => ({
  ...data,
  latestMetric: data.latestMetric || dummyLatestMetric,
});

最后但并非最不重要的一点是,您最好先了解ESLint规则,然后阅读编码实践背后的原因,看看您是否想要使用该规则,或者修改它,甚至在您的项目中禁用它。

参考文献:https://eslint.org/docs/rules/no-return-assign

票数 2
EN

Stack Overflow用户

发布于 2020-04-17 00:58:52

由于您没有显式地从箭头函数返回一个值,eslint希望您在一个主体中使用一个函数。

这应能解决以下问题:

代码语言:javascript
运行
复制
 const chartData = res.data.map(
    (data) => {
      data.latestMetric = data.latestMetric === null ? dummyLatestMetric : data.latestMetric;
 });
票数 0
EN

Stack Overflow用户

发布于 2020-04-17 01:01:01

您需要返回值:

代码语言:javascript
运行
复制
const chartData = res.data.map((data) => {
  data.latestMetric = data.latestMetric === null ? dummyLatestMetric : data.latestMetric;
  return data;
});

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61262422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档