У вас верное направление. Именно такой подход одностороннего байндинга и требует Vue.js. В таком случае вы всегда контролируете входные и выходные параметры.
На самом деле по логике жизненного цикла компонентов Vue все верно.
В документации написано beforeCreate вызывается синхронно сразу после инициализации экземпляра, до настройки наблюдения за данными, механизмов слежения и событий. То есть в этот момент уже первый раз computed выполнится, но слежения за данными внутри него еще не будет.
Я тоже всегда делаю проверку в computed и мне кажется это нормально.
Вы пытаетесь совместить несовместимое. Зачем Вам в качестве REST API использовать CMS? Это же извращение!
Если нужен бэкенд, берите любой известный вам язык (PHP, Python, NodeJS и тд) и пишите на нем REST API. Благо, у каждого языка есть фреймворк, где легко можно разработать свой API.
Спасение утопающего, дело рук самого утопающего:) Решил вопрос.
Ошибку вызывал ESlint. Добавил в .eslintrс версию EcmaScript 8 и конструкция async/await заработала:
Для такой задачи не обязательно использовать какую то библиотеку. Можно использовать хуки vue-router и в них прописывать все что угодно, в том числе и доступы.