我使用 React、ES6 并收到以下错误消息。我尝试了 here 中不同的东西但它不适合我。如果我删除“return”,我会收到此错误:
error Do not use 'new' for side effects 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));
});
};
error Unexpected block statement surrounding arrow body arrow-body-style
最佳答案
如果您只有一个表达式,并且您希望返回该表达式,则可以缩短箭头函数,例如,如果您希望函数返回您传入的数字 + 1,则可以使用此函数是一个缩短版本:x => x + 1
。
new Promise(............)
是一个单一的表达式,你想返回它,所以你可以 (并且应该,这就是为什么 ESLint 是提示)像这样缩短它:
(values, dispatch) =>
new Promise(...........)
此外,由于 validation.availableUserEmail()
返回 Promise 本身,因此您可以完全删除 Promise 构造函数(用 Promise 构造函数包装 Promise 是一种反模式),所以你可以简单地做:
(values, dispatch) =>
validation.availableUserEmail(.......)
.catch(.........)
关于javascript - 围绕箭头主体 Promise 的意外 block 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41602976/