简体   繁体   中英

How to fix @typescript-eslint/no-misused-promises error

I have a onClick() method for a PrimaryButton class. I got @typescript-eslint/no-misused-promises error from eslint check. Code as below:

onClick = { () =>
    Utils.getName(a, b).then(
        (name) => {
            Utils.deleteThing(name, x, y);
        })
    }

How should I fix my code to avoid this error? Would appreciate your help. Thanks!

Update: eslint config as follows在此处输入图像描述

Error message is on the line of onClick(): 在此处输入图像描述

The error states that a void return was expected. But instead, you are returning a promise.

onClick = { () =>
    Utils.getName(a, b).then(
        (name) => {
            Utils.deleteThing(name, x, y);
        })
    }

The way you write your arrow function, you are returning the below code (a promise) rather than running it and just returning nothing:

Utils.getName(a, b).then(
            (name) => {
                Utils.deleteThing(name, x, y);
            })

However, if you write your code like this, void is returned and the code is actually ran:

onClick = { () => {
    Utils.getName(a, b).then(
        (name) => {
            Utils.deleteThing(name, x, y);
        })
    }
}

The key is how an arrow function works. If you leave out the { } after the => , the return is implied to be the single statement after the => which is not what you wanted. You didn't want to return the Utils.getName function, you just wanted it to run. See here for more info.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM