Здравствуйте, форумчане!
Есть вопрос по работе с SPA (Vue). Ситуация:
С бд забираю список пользователей (например 20 пользователей) в массив Все пользователи.
При загрузке на странице на основе массива Все пользователи формируются два массива пользователей: невыбранные пользователи и выбранные пользователи. Выбранные пользователи формируются на основе некоего шаблона, в котором указано 5 пользователей. Остальные 15 попадают в невыбранных.
У пользователя имеется возможность дополнить список выбранных пользователей путем:
перетаскивания из невыбранных
добавлением нового пользователя.
Вопрос:
Как правильно добавить нового пользователя, чтобы не сбросить уже выбранных пользователей? Какой порядок действий надо совершить?
Как вижу решение:
Асинхронным запросом добавить пользователя в бд.
Вернуть запись о вновь добавленном пользователе.
Добавить эту запись в массив Все пользователи.
По идее Vue должен сам обновить соответствующие массивы и новый пользователь должен попасть в Невыбранные пользователи.
Это очень интересный вопрос. Я недавно думал о подобном. Я бы сделал API в котором спрашиваю списки пользователей. И после каждого действия обновлял бы состояние виджета с пользователями из этого API. Более того виджет бы инициализировал из этого API. Получится единственный поток информации.
Проблема с твоим подходом, что как только появится еще один способ добавления/изменения пользователей тебе придется реализовывать его в 2 местах: на сервере и на клиенте. По сути ты держишь 2 состояния: на клиенте список пользователей и обновляешь его по действию пользователя и на сервере в БД. Если вопросы производительности не стоят, то так мне кажется было бы проще.
Моя задача стояла так: есть список тегов. Он собирается из списка изображений. Список тегов может поменяться если
любому из изображений добавили тег
изображение добавили/удалили/сделали публичным
Соответственно чем держать состояние тегов на клиенте и пытаться синхронизировать его, я запрашиваю список тегов после каждой операции которая может повлиять на список тегов.