Tengo un escenario en el que es posible que no sepa si una determinada propiedad de objeto está definida o no. Si lo es, debería ser una función y debería llamarse. Si no está definido, se crea una función de copia de seguridad. estoy haciendo esto con lógica || :
// handleGetData may be undefined: const { handleGetData, ActionCreators } = fromSomewhere; const getData = handleGetData || function () { dispatch( ActionCreators.GetData({ params: params }) ); }; getData() Esto parece funcionar bien, excepto que eslint se queja de una Unexpected unnamed function pero la sintaxis se rompe cuando intento devolver una función de flecha después de || :
const getData = handleGetData || () => { // <------ Parsing error: Expression expected dispatch( ActionCreators.GetData({ params: params }) ); }; ¿Por qué es esto? Si handleGetData no está definido, ¿no debería el valor de getData convertirse en la función de flecha y seguir siendo invocable?
Poner paréntesis alrededor de la función resolverá el error de sintaxis:
const getData = handleGetData || (() => { dispatch( ActionCreators.GetData({ params: params, }) ); }); Es probable que el error de eslint se deba a la regla func-names (consulte este enlace para obtener más detalles). Puede solucionarlo agregando un nombre de función, como handleGetDataFallback :
const getData2 = handleGetData || function handleGetDataFallback () { dispatch( ActionCreators.GetData({ params: params, }) ); };