Что ж, если вы логически посмотрите на свое текущее решение, то у вас будет следующая ситуация
- users - пустой массив, с isLoading true
- пользователи выбираются и помещаются впредположим, что
['John', 'Joe', 'Alfred']
- вы фильтруете своих пользователей на букву
J
и обновляете пользовательское состояние до ['John', 'Joe']
- Вы удаляете фильтр на букву
J
и обновляетепользовательское состояние ['John', 'Joe']
потому что компонент полностью забыл о Alfred
, вы удалили кромку на шаге 3
Итак, у вас есть несколько опций, просто отфильтруйте рендер перед отображением, в зависимости от того, сколькопользователи, которые не должны быть такими плохими или создавать более 1 свойства в состоянии, скажем filteredUsers
, которое содержит список users
, которые соответствуют вашему фильтру, и работать вместо этого с этим состоянием.
Крутая вещь в вашем текущем фильтре, это то, что он всегда будет работать быстрее, так как ваш набор результатов вроде обрезается, так что это хорошо, но я сомневаюсь, что вы будете иметь дело с таким количеством пользователей, что вам нужнод это.