По-хорошему у вас должен быть запрос на сервер с сортировкой, пагинацией, фильтрацией и лимитом.
На каждый клик по сортировке, пагинатору или фильтру запрос. Например:
GET '/api/v1/animals?page=1&limit=20sort=name&sortDirection=DESC&priceFrom=1000&priceTo=2000'
То что вы хотите реализовать, как минимум, вряд ли найдет применение в реальном приложении.
Учитесь решать реальные задачи.
А трюки с
display: none, при возможностяx
react вообще можно не использовать.
Даже если пока не можете реализовать сервер с бд и REST API. Правильней будет хранить состояние фильтра в
state компонента и выдавать на редер отфильтрованный по параметрам фильтра из
state массив с животными. Изменился фильтр - произошел рендер. Вот и вся задача.