Сохранение нескольких состояний загрузки после многократного вызова мутации graphql

#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 завершилось.

Вы можете сделать это с помощью

  1. получение a process id от process при его вызове и сохранение этого идентификатора внутри loading item вместе с user item id ,
  2. или вы можете сохранить loading id как закрытие при вызове process , и удалить соответствующее loading item , например, внутри a .then((xyz)=>{... removeLoading(processId) ...}) .