Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

142
Visualizações
React.js estilo condicional con más de 2 casos: ¿una forma más inteligente que usar una función de autoinvocación?

Cuando tengo más de 2 opciones para el estilo condicional en React, prefiero no tener condiciones ternarias dentro de las condiciones ternarias, así que uso una función de autoinvocación como esta:

 const HeaderLink = ({
 label,
 linkTo,
 firstItem = false,
 lastItem = false,
}: {
 label: string;
 linkTo: string;
 firstItem?: boolean;
 lastItem?: boolean;
}) => {
 return (
 <div
 id="HeaderLink"
 style={{
 padding: (() => {
 if (firstItem) return "0 1vw 0 0";
 if (lastItem) return "0 0 0 1vw";
 return "0 1vw";
 })(),
 }}
 >
 <Link href={linkTo}>{label}</Link>
 </div>
 );
};

Funciona, pero ¿hay una forma más inteligente? ¿Hay razones para evitar este patrón?

almost 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Es posible que desee reutilizar su función

Pero incluso si no lo hace, incluso en ese caso, es posible que desee tener un tiempo fácil para leer su código y definir la función solo una vez. En lugar de una función de autoinvocación, puede crear una función, como

 function getWV(firstValue, secondValue) {
 alert("I have been executed");
 //...do your stuff
}

//proof-of-concept
getWV('a', 'b');

El ejemplo anterior muestra que puede lograr una sola línea en su código de renderizado, solo llamando a la función en lugar de definirla cada vez que la renderiza y oscureciendo la legibilidad del renderizador.

Puedes usar matrices útiles

 let array = ["0 1vw 0 0", "0 0 0 1vw", "0 1vw"];

function getItem(items)
{
 let filteredArray = items.filter((item) => !!item);
 if (filteredArray.length) return array[items.indexOf(filteredArray[0])];
 return array[items.length];
}

console.log(getItem([null, 3]));
console.log(getItem([null, 0]));

A primera vue, este código puede no parecer mucho mejor que el suyo, pero imagine el caso en el que puede tener más de dos valores. En ese if , tendría tantos condicionales como elementos, mientras que el enfoque anterior es mucho más dinámico.

almost 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda