箭头函数不应返回赋值no-return-assign

时间:2019-05-03 17:53:14

标签: javascript react-redux redux-form

但是,我的代码在应用程序中正常工作,但是在提交赫斯基之前运行并发出错误消息,提示“箭头功能不应返回分配no-return-assign”

           <Field name='dob' label='dateOfBirth'
              placeholder=''
              onFocus={(e) => e.target.placeholder = 'MM/YYYY/DD'}
            />

2 个答案:

答案 0 :(得分:0)

如果省略arrow函数中的括号,它将隐式返回该语句。在这种情况下,编译器会警告您您正在返回不允许的赋值(我想避免这种情况,您尝试检查是否相等并错误地仅键入一个=而不是===

您可以将函数主体括在方括号中,以避免出现此问题:

onFocus={(e) => { e.target.placeholder = 'MM/YYYY/DD'} }

查看MDN以获得有关箭头功能的更多信息。

答案 1 :(得分:0)

正如一些人在评论中提到的那样,问题是您正在使用

(e) => e.target.placeholder = 'MM/YYYY/DD'

大致等同于

anon_func = function (e) {
    return e.target.placeholder = 'MM/YYYY/DD';
}

因为(args) => <expression>表示求值表达式并返回结果。

与jakemingolla的答案相反,此 是合法的;它返回“ MM / YYYY'DD”,在这种情况下这无关紧要,因为您不关心任何返回值。这就是它“起作用”的原因。但这通常被认为是较差的样式,这就是为什么您提交前的检查会对其进行标记的原因。

您想要的是(args) => {<function-body>},如果您不显式返回某些内容,则它(就像任何直接声明的函数体一样)只会返回未定义的内容。那是

(e) => {e.target.placeholder = 'MM/YYYY/DD';}

大致像

anon_func = function (e) {
    e.target.placeholder = 'MM/YYYY/DD';
}

这就是你想要的。

相关问题