Если нужно по каждому изменению в поле отправлять данные на сервер, то я бы тоже посмотрел в сторону отдельного поля-компонента, который может работать с сервером. В компоненте на изменение поля, через debounce отправляете данные на сервер, ловите ответ и обрабатываете его как нужно в компоненте, показывая ошибки и т.п.
Так вы сможете потом вставить этот компонент в любое место, указав в качестве входного параметра адрес куда отправлять данные из этого поля.
И так и так можно
На примере добавления строки в таблицу:
1. новая строка -> отправляем к серверу -> получаем таблицу с добавленной строкой -> присваиваем реактивной переменной -> обновление интерфейса
2. новая строка -> присваиваем реактивной переменной и отправляем серверу -> обновление интерфейса. Получаем ответ от сервера. Если ошибка, то сообщаем об этом и далее варианты или повторить попытку или забить.
Второй вариант есть по сути optimistic update погуглите что это.
Второй вариант сложнее в реализации, но более юзер френдли.
Если вы пользуетесь фреймворками, то они как правило, уже предлагают способы разбиения и инкапсулирования кода в модули, компоненты, диктуют принципы взаимодействия, наследования и т.д. И знание этих слов и их применение вам может понадобится не так часто) Но если вы захотите написать свой фреймворк или библиотеку, то без них вам не обойтись. Вообще это базовые конструкции js, не удивительно, что про них спрашивают)
Нужно взять и написать :)
Показываем вопрос, показываем варианты ответа, сохраняем промежуточный результат, показываем итоговый результат.
Можете поискать готовые либы по запросу типа: js library for quizes
Мне кажется вам просто нужно попробовать. На нем сильно проще и меньше писать чем на том же redux. Это однозначно самый правильный выбор, имхо, для vue на данный момент, если вы хотите хранить состояние в одном месте. Map getters, mapsetters позволяют проксировать функции из хранилища. Геттеры позволяют не писать повторно функции извлечения данных из хранилища в разных компонентах. Эта либа будет наверняка развиваться и поддерживаться синхронно с vue. Вообщем, у вас нет других вариантов)
Следует помнить, что изменение параметров маршрута не вызывает выполнения сторожевых хуков enter/leave. Вы можете добавить watch на объект $route для отслеживания этих изменений, или использовать хук beforeRouteUpdate.
В метод join подается разделитель. В данном случае это "ля". Если элементов в массиве 4, то разделителей, которые объединят элементы этого массива в строку будет три.