Encontré este código en un tutorial.
const renderApp = (Component) => render( <Provider store={store}> <AppContainer> <Component /> </AppContainer> </Provider>, document.getElementById('root') );Mi pregunta es: ¿no debería estar entre llaves el valor devuelto? porque las funciones de flecha devuelven lo que está al lado de => si no se menciona nada?
const renderApp = (Component) => ( render( <Provider store={store}> <AppContainer> <Component /> </AppContainer> </Provider>, document.getElementById('root') ); )¿No debería tener llaves para envolver el contenido?
El lado derecho de una función de flecha puede ser:
{ y } (que son llaves)return en el bloque Debe envolver la expresión entre paréntesis ( ( y ) ) si es un objeto literal porque los objetos literales están delimitados con llaves.
() => { foo: 123, bar: 456 }; // This is an error Si escribió lo anterior, { y } se interpretarían como un bloque y no como una expresión para crear un objeto.
() => ({ foo: 123, bar: 456 });Agregar paréntesis le dice al analizador JS que es una expresión y no un bloque.
Dado que su expresión no comienza con { , no se tratará como un bloque, por lo que no es necesario usar paréntesis.
El primer fragmento de código, después de "=>" está vacío, no se insertará el compilador JS; y acabar ahí?
No. La inserción automática de punto y coma solo ocurre en lugares que podrían ser el final de algo. No sucederá después de => porque debe haber algo en el lado derecho de => .
No es necesario envolverlo entre llaves porque se devuelve implícitamente una declaración de una sola línea. Sin embargo, puede hacerlo usted mismo, no es incorrecto, solo que es un poco de azúcar sintáctico.