Quiero crear un operador ternario si anidado con componentes de reacción, pero estoy siendo desafiado, esta es mi lógica:
if (value==='bank' && is_valid_iban && is_completed) { return <Checked/> } else if (is_completed) { return <Checked/> } else if (value==='businessplan' && is_required) { return <NotChecked/> }
Este fue mi cambio:
{ (!value=== 'bank' || is_valid_iban) && is_completed ? (<Checked/>) : (value ==='businessplan' && is_required && (<NotChecked/>)) }
¿Cuál podría ser la mejor manera de encontrar un operador ternario para la lógica anterior?
Gracias
Hazlo simple:
{(value === "bank" && is_valid_iban && is_completed) || is_completed ? ( <Checked /> ) : (value === "businessplan" && is_required) ? ( <NotChecked /> ) : ( <NotChecked /> )}
Esta solución busca simplificar el siguiente conjunto de condiciones:
if (value==='bank' && is_valid_iban && is_completed) { return <Checked/> } else if (is_completed) { return <Checked/> } else if (value==='businessplan' && is_required) { return <NotChecked/> }
Se observa de lo anterior que is_completed
es parte de la primera y segunda condición. Algo así: ((A && B && C) || C)
que se puede representar como (A && B) || C
Usando una estructura estándar if..else
:
if ((value === 'bank' && is_valid_iban) || is_completed) return <Checked /> else if (value === 'businessplan' && is_required) return <NotChecked /> else return null;
¿Usando ternario ?:
return ( ((value === 'bank' && is_valid_iban) || is_completed) ? <Checked /> : (value === 'businessplan' && is_required) ? <NotChecked /> : null );
Cuando use ?:
siempre sangre el código para que sea legible. Lo mismo aplica para if else
también; sin embargo, la estructura if else
es mucho más legible que ?:
.