我使用React,ES6并收到以下错误消息。我尝试了here中不同的东西,但它不适合我。如果我删除“return”,我会收到此错误:
错误不要将'new'用于副作用no-new
如果我这样编码
const asyncValidate = (values, dispatch) => {
const promise = new Promise(resolve, reject)
promise()...
我无法访问建设者的解析和拒绝。
如何使此代码正常工作?
const asyncValidate = (values, dispatch) => {
return new Promise((resolve, reject) => {
validation.availableUserEmail(values.email, dispatch)
.catch(err => reject(err));
});
};
错误围绕箭头主体arrow-body-style
的意外阻止语句
答案 0 :(得分:2)
如果你只有一个表达式,并希望返回该表达式,则可以缩短箭头功能,例如,如果你想让一个函数返回你传入的数字+ 1,这个是一个缩短版本:x => x + 1
。
new Promise(............)
是一个单独的表达式,你想要返回它,所以你可以(并且应该,这就是ESLint抱怨的原因)缩短它如下:
(values, dispatch) =>
new Promise(...........)
此外,因为validation.availableUserEmail()
本身返回一个Promise,你可以完全删除Promise构造函数(用Promise构造函数包装一个Promise是一个反模式),所以你可以这样做: / p>
(values, dispatch) =>
validation.availableUserEmail(.......)
.catch(.........)