@danyavodichev

Добавил элементы в массив в local storage, при обновлении страницы компоненты пропадают с экрана, но остаются в local storage, как это исправить?

Я делаю свой аналог Google Forms. У меня есть массив cards, в который добавляются разные типы вопросов (в зависимости от того, какой вопрос вы решили добавить), этот массив cards добавляется в local storage, и компоненты реактивно появляются на экране, однако при обновлении страницы компоненты пропадают с неё, хотя в local storage всё остается на своих местах, помогите решить проблему.

Вот репозиторий github - https://github.com/yoursAniki/Form-Builder-App
Вот github pages - https://yoursaniki.github.io/Form-Builder-App/#/
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
const addCard = (cardName) => {
  cards.value.push({
    id: Date.now(),
    component: cardName,
    order: cards.value.length + 1,
    isRequired: false
  })
}

Что такое cardName? Не то, что вам, судя по имени параметра, кажется. Это не имя, а сам объект компонента. И вы его потом в localStorage засовываете. Так что методы setup и render теряются.

Сложите компоненты в объект:

const components = {
  ShortTextCard,
  LongTextCard,
  SingleQuestionCard,
  MultiQuestionCard,
};

Передавайте в addCard их имена:

- @click="addCard(ShortTextCard)"
+ @click="addCard('ShortTextCard')"

Когда надо экземпляр компонента создать, доставайте объект компонента по его имени из упомянутого выше объекта:

- :is="card.component"
+ :is="components[card.component]"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы