chousy es una pequeña y poderosa utilidad para React que permite renderizar componentes condicionalmente de manera elegante. Simplifica el manejo de condicionales complejos y mejora la legibilidad de tu código.
Instala la librería usando npm o yarn:
npm install chousy
# o
yarn add chousy
Importa chousy
en tu proyecto y pásale un objeto donde las claves sean condiciones (evaluables como expresiones booleanas) y los valores sean componentes React. chousy devolverá el primer componente cuya condición sea verdadera.
import chousy from 'chousy';
const MyComponent = () => {
const isLoading = false;
const isAuthenticated = true;
return chousy({
[String(isLoading)]: <Loading />,
[String(isAuthenticated)]: <Dashboard />,
default: <Login />, // Este componente se usará si ninguna condición es verdadera
});
};
- ✅ Fácil de usar.
- ✅ Soporte para condiciones booleanas y expresiones evaluables.
- ✅ Componente predeterminado con la clave
default
. - ✅ Soporta componentes como funciones para renderizado dinámico.
-
conditions
(Object): Un objeto donde:- Las claves son condiciones evaluables (booleanas o expresiones).
- Los valores son componentes React (pueden ser nodos o funciones que retornan un nodo).
- El primer componente correspondiente a una condición verdadera.
- Si ninguna condición es verdadera, devuelve el componente definido en
default
onull
.
import chousy from 'chousy';
const MyComponent = () => {
const userRole = 'admin';
return chousy({
[String(userRole === 'admin')]: <AdminDashboard />,
[String(userRole === 'user')]: <UserDashboard />,
default: <GuestView />,
});
};
En este ejemplo, userRole === 'admin'
y userRole === 'user'
son condiciones evaluadas que retornan true
o false
, y luego se convierten a cadenas ('true'
y 'false'
), lo que permite utilizar estas claves en el objeto de condiciones.
-
Usa la clave
default
para manejar casos donde ninguna condición sea verdadera. -
Las claves de las condiciones deben ser evaluables (booleanos o expresiones) y convertidas a cadenas para usarlas como claves.
-
Puedes usar funciones como valores para el renderizado diferido:
const MyComponent = () => { const fetchData = () => <DataComponent data={loadData()} />; return chousy({ [dataAvailable]: <DataComponent />, default: fetchData, }); };
Asegúrate de instalar las dependencias para las pruebas:
npm install --dev jest
Ejecuta las pruebas:
npm test
¡Las contribuciones son bienvenidas! Por favor, crea un issue o envía un pull request.
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.