21 de outubro de 2022 • 2 min de leitura
Pare de usar “&&” para renderização condicional no React
Evite bugs não usando "&&" em componentes React
Se você já viu algum aplicativo React, sabe como renderizar condicionalmente partes de um componente dependendo de props e state. Embora existam várias maneiras de renderização condicional, este artigo se concentra no operador lógico && (AND)
do JavaScript. A principal razão para essa ênfase é que o operador &&
geralmente leva a bugs de interface do usuário, que podem ser facilmente evitados e muitas vezes não são mencionados.
Como funciona o operador && (AND)
Um exemplo clássico de seu uso no React seria:
function MyComponent({ contition }) {
return (
<div>
<h1>Title</h1>
{contition && <ConditionalComponent />}
</div>
);
}
Resumindo:
- se
condition
é um valor verdadeiro,é renderizado - se
condition
é um valor falso,não é renderizado
Não é nada específico do React, mas sim um comportamento de JavaScript e outras linguagens de programação chamado avaliação de curto-circuito. Ou seja, se o primeiro operando condition
for falso, o operador && (AND)
para e não avalia o segundo operador <ConditionalComponent/>
.
Você pode tentar isso no seu navegador executando o snippet de código abaixo no Console:
// Isso exibirá uma caixa de alerta.
true && alert('hello');
// Isso não fará nada.
false && alert('hello');
Por exemplo:
- Se
condition
é0
, o0
é exibido na interface do usuário. - Se
condition
éundefined
você receberá um erro parecido como este:
Uncaught Error: Error(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.
O que usar em vez do operador && (AND)
Para evitar mostrar algo que você não deseja na interface do usuário, como 0
, que pode atrapalhar o layout, use o operador ternário
do JavaScript
, veja um exemplo abaixo:
condition ? <ConditionalComponent /> : null;
Conclusāo
Para evitar erros de interface do usuário, use o operador ternário
do JavaScript para renderização condicional de componentes React
em vez do operador lógico &&
.
🔴 BAD
condition && <ConditionalComponent />
🟢 GOOD
condition ? <ConditionalComponent /> : null
Fonte:
https://medium.com/geekculture/stop-using-for-conditional-rendering-in-react-a0f7b96200f8