但是,我的代码在应用程序中正常工作,但是在提交赫斯基之前运行并发出错误消息,提示“箭头功能不应返回分配no-return-assign”
<Field name='dob' label='dateOfBirth'
placeholder=''
onFocus={(e) => e.target.placeholder = 'MM/YYYY/DD'}
/>
答案 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';
}
这就是你想要的。