首页 > 解决方案 > 为什么这个 setState 是这样的,它是如何工作的?

问题描述

抱歉,我不知道如何搜索这种问题,也没有找到任何答案,但我对这段代码感到很困惑,它是一个用于 OTP 验证的 setState 函数:

setCode((currCode) =>
  currCode
  .split('')
  .map((ch, i) => (i !== idx ? ch : isCharNumber ? val : isEmpty ? '_' : ch))
  .join(''),
);

我了解地图部分,我只是想知道加入功能后的那个逗号“,”。为什么?如果我删除该代码有效,但 ESlint 告诉我把它放在最后。它返回一个对象吗?它只是通过状态"____"(四个下划线)并将每个更改_为数字。如果有人向我解释这一点并告诉我如何搜索和寻找这种混淆,我真的很感激。泰

标签: javascriptreactjsreact-native

解决方案


它返回一个对象吗?

不。

我只是想知道加入函数之后的那个逗号“,”。为什么?

在现代 JavaScript 中,在函数调用的最后一个参数之后(以及函数参数列表中的最后一个参数之后)可以有一个逗号,如下所示:

example(
    firstArg,
    secondArg,
    thirdarg,
  //        ^−−−−−−−−−−−− optional
)

以后添加/删除参数时很方便,不必担心添加/删除逗号。

这就是您的代码中发生的事情,setCode(箭头函数)有一个参数,后跟一个逗号。

如果我删除该代码有效,但 ESlint 告诉我把它放在最后。

ESLint 可以配置为在函数参数列表中需要尾随逗号;显然它在您的设置中是这样配置的。如果您不喜欢该规则,您可以将其关闭(在私人项目中)或与您的团队讨论(在团队项目中)。


推荐阅读