#javascript #reactjs #frontend #apollo-client #react-apollo
#javascript #reactjs #интерфейс #apollo-клиент #реагировать-apollo
Вопрос:
Я использую react и react apollo в своем приложении, и у меня есть вопрос. У меня есть страница, содержащая список пользователей. Каждый элемент содержит кнопку » «. Когда я нажимаю на элемент, я хочу отображать счетчик, пока мутация не завершится.
Не могли бы вы предложить мне лучшее решение для сохранения loading
для каждого вызова мутации? Теперь я просто сохраняю его в массив, но я думаю, что это можно решить лучше
Комментарии:
1. Вы можете сохранить это состояние в каждом элементе по отдельности.
2. Вы хотите сохранить это
loading
как отдельную переменную, не связанную сloading
мутацией?
Ответ №1:
Вам необходимо сохранить связь между одним loading
процессом и соответствующим user
элементом.
Я предлагаю (не зная ваших требований) иметь loadings
массив, в который вы добавляете a loading item
, содержащий user id
onClick, и удаляете loading item
его, когда закончите. loading item
При необходимости A может также содержать другую информацию.
Вам также, вероятно, необходимо сохранить связь между (возможно, асинхронным) process
и loading item
(или user item
), чтобы вы знали, что loading item
завершилось.
Вы можете сделать это с помощью
- получение a
process id
отprocess
при его вызове и сохранение этого идентификатора внутриloading item
вместе сuser item id
, - или вы можете сохранить
loading id
как закрытие при вызовеprocess
, и удалить соответствующееloading item
, например, внутри a.then((xyz)=>{... removeLoading(processId) ...})
.