如何返回异步箭头功能?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何返回异步箭头功能?相关的知识,希望对你有一定的参考价值。

我在Redux上使用React,并具有以下代码:

hooks.js

import { useDispatch } from 'react-redux';
import { checkCookieOne, checkCookieTwo } from './thunk';
...
export function useValidateCookieEffect() {
    const dispatch = useDispatch();
    React.useEffect(() => {
        dispatch(checkCookieOne());
        dispatch(checkCookieTwo());
    }, [dispatch]);
}

并且在我的thunk文件中:

export function checkCookieOne() {
    return async dispatch => {
        const hasCookie = Boolean(window.localStorage.getItem('cookieOne') || false);
        dispatch(store.actions.toggleCookieOneValue(hasCookie));
    };
}

export function checkCookieTwo() {
    return async dispatch => {
        const hasCookie = Boolean(window.localStorage.getItem('cookieTwo') || false);
        dispatch(store.actions.toggleCookieTwoValue(hasCookie));
    };
}

为了使其更具可读性,我想将代码合并为单行返回。

所以,来自:

export function checkCookieOne() {
    return async dispatch => {
        const hasCookie = Boolean(window.localStorage.getItem('cookieOne') || false);
        dispatch(store.actions.toggleCookieOneValue(hasCookie));
    };
}

对于这样的事情(我的尝试)-请记住,dispatch没有在此文件中声明,而仅在hooks.js中声明:

export async function checkCookieOne() => dispatch(store.actions.toggleCookieOneValue(checkGivenCookieExists('cookieOne')));

但是那是无效的语法。它抱怨箭头功能,说:

'{'或';'预期。

如何将其转换为一行?

export function checkCookieOne() { return async dispatch => dispatch(store.actions.toggleCookieOneValue(checkGivenCookieExists('cookieOne'))); }

这可以用,但不完全是我想要的

答案

尝试一下

let checkCookieOne = async () => dispatch(store.actions.toggleMyCookieValue(checkGivenCookieExists('cookieOne')));

export checkCookieOne;

// Or maybe...

export let checkCookieOne = async () => dispatch(store.actions.toggleMyCookieValue(checkGivenCookieExists('cookieOne')));

以上是关于如何返回异步箭头功能?的主要内容,如果未能解决你的问题,请参考以下文章

如何使箭头功能异步? [复制]

(导航组件)返回首页fragment时如何在activity上显示返回箭头?

异步箭头函数预期没有返回值

应用ActionBar中的返回按钮

前端片段整理

你如何创建一个命名的异步箭头函数? [复制]