Tengo un sistema de filtrado donde uso una matriz para agregar o eliminar los métodos de filtrado. Pero mi estado no funciona correctamente o me he perdido algo.
const [filters, setFilters] = useState([]); const [creatorFilter, setCreatorFilter] = useState(null); const handleCreatorFilter =(filter) => { setCreatorFilter(filter); if (filter === 'structures' && filters.indexOf(byStructureFilter) === -1) { setFilters([...filters, byStructureFilter]); } if (filter === 'members' && filters.indexOf(byMemberFilter) === -1) { setFilters([...filters, byMemberFilter]); } if (filter === 'all') { setFilters(filters.filter(el => el !== byStructureFilter || el !== byMemberFilter)); } }; const byStructureFilter = (item) => { return item.relationships.structure.data }; const byMemberFilter = (item) => { return item.relationships.user.data && !item.relationships.structure.data };
Aquí los dos botones que llaman a ese handleCreatorFilter
para filtrar
<button onClick={() => creatorFilter === 'structures' ? handleCreatorFilter('all') : handleCreatorFilter('structures')}>Structures officielles</button> <button onClick={() => creatorFilter === 'members' ? handleCreatorFilter('all') : handleCreatorFilter('members')} >Membres Wekomkom</button>
Las cosas son para agregar métodos de filtrado a la matriz, funciona bien, pero no cuando el filtro está configurado para all
(eliminando los métodos de filtrado). ¿Ves algo mal en mi lógica?