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

Javascript 箭头函数不应返回赋值Eslint,javascript,reactjs,eslint,eslint-config-airbnb,Javascript,Reactjs,Eslint,Eslint Config Airbnb,我映射了一个从API返回的值,如果该值不存在,则添加一个伪值作为防御代码。为此,我使用JS映射来获得结果。但不幸的是,我得到了eslint errorArrow函数不应返回赋值。这里我分享我实现的代码。请检查并建议我最好的解决方案。我不想禁用eslint错误。提前谢谢 代码: const chartData = res.data.map( (data) => data.latestMetric = data.latestMetric === null ? dummyLatestM

我映射了一个从API返回的值,如果该值不存在,则添加一个伪值作为防御代码。为此,我使用JS映射来获得结果。但不幸的是,我得到了eslint error
Arrow函数不应返回赋值
。这里我分享我实现的代码。请检查并建议我最好的解决方案。我不想禁用eslint错误。提前谢谢

代码:

 const chartData = res.data.map(
    (data) => data.latestMetric = data.latestMetric === null ? dummyLatestMetric : data.latestMetric
  );

错误:

 const chartData = res.data.map(
    (data) => data.latestMetric = data.latestMetric === null ? dummyLatestMetric : data.latestMetric
  );

箭头函数不应返回赋值。eslint(不返回分配)

arrow函数表达式是正则函数表达式的一种语法紧凑的替代方法,尽管它没有自己对this、arguments、super或new.target关键字的绑定。箭头函数表达式不适合用作方法,并且不能用作构造函数

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


.map()
函数要求您为每次迭代返回一个值。如果只想通过数组循环来做副作用,可以考虑<代码>前缀或其他循环函数。

在您的情况下,我发现您希望有条件地修改
res.data
中的
latestMetric
,您可以这样做:

const chartData = res.data.map(data => ({
  ...data,
  latestMetric: data.latestMetric === null ? dummyLatestMetric : data.latestMetric,
});
数据
属性扩展到一个新对象中,然后我们根据条件有条件地设置
latestMetric
的值

如果不想使用扩展语法,也可以使用传统方法:


关于防御策略,您可能有兴趣使用
|
语法,但在验证所有虚假值时要小心(包括:
false
0
null
未定义
,等等)


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


Ref:

由于您没有从arrow函数显式返回值,因此eslint希望您使用带有主体的函数

这应该可以解决这个问题:

 const chartData = res.data.map(
    (data) => {
      data.latestMetric = data.latestMetric === null ? dummyLatestMetric : data.latestMetric;
 });

您需要返回以下值:


const chartData=res.data.map((数据)=>{
data.latestMetric=data.latestMetric==null?dummyLatestMetric:data.latestMetric;
返回数据;
});问题:

此规则表示不允许您返回类似以下操作的分配操作:

return a = 3 // or similar.
但这正是你正在做的,所以

诀窍是返回对象/属性,而不是赋值操作
=

不清楚在
.map
中返回您感兴趣的内容是什么,您想返回整个
数据还是只返回
数据。latestMetric
,因此我的答案也包括两种情况:

如果需要修改并返回数据,请尝试以下操作:

const chartData = res.data.map(
  data => (data.latestMetric = data.latestMetric === null ? dummyLatestMetric : data.latestMetric) && data
  // updated data.latestMetric and then returning a whole object
);
const chartData = res.data.map(
  data => data.latestMetric === null ? dummyLatestMetric : data.latestMetric
);
如果您只需要
数据.latestMetric
,请尝试以下操作:

const chartData = res.data.map(
  data => (data.latestMetric = data.latestMetric === null ? dummyLatestMetric : data.latestMetric) && data
  // updated data.latestMetric and then returning a whole object
);
const chartData = res.data.map(
  data => data.latestMetric === null ? dummyLatestMetric : data.latestMetric
);

data.latestMetric=data.latestMetric
?对不起,我没有得到itconst chartData=res.data.map((data)=>data.latestMetric=(data.latestMetric==null?dummyLatestMetric:data.latestMetric));顺便问一下,您想在
.map
中返回什么?您想收集
数据
还是
数据。最新度量值
?@qiAlex现在呢。我添加了
{
}