alestro
@alestro

Почему сбрасывается состояние при переключении компонентов во vue3?

На странице компонента подтягиваются проекты с сервера api, но при возврате на страницу компонента после перехода на другой роут коллекция с проектами сбрасывается и загружается по новой. Как это исправить?
Секция script:
export default {
  name: "Projects",
  components: {SearchBar, AddProjectModal, ProjectCard, PageWrapper, Header, Sidebar},
  data() {
    return {
      searchResults: ref([]),
      hideCloseBtn: true,
    }
  },
  setup() {
    return {
      projects: ref(findProjects({load: 'photos'}))
    }
  },
  methods: {
    async load() {
      await this.projects.load()
    }
  }
}

class ProjectCollection {
    *[Symbol.iterator]() {
        for (let element of this._elements) {
            yield element
        }
    }
    constructor(url) {
        this._elements = []
        this._nextUrl = url
        this._count = 0
    }

    add(element) {
        this._elements.push(element)
    }

    addMany(elements) {
        this._elements.push(...elements)
    }

    _map(data){
        if (data !== []) {
            this._nextUrl = data.next
            this._totalResults = data.count
            this.addMany(data.results)
        }
    }

    get length() {
        return this._elements.length
    }

    isEmpty() {
        return this._elements.length === 0
    }

    get count() {
        return this._count
    }

    hasMore() {
        return this._nextUrl !== null
    }

    async load() {
        if (this.hasMore()) {
            this._map((await axios.get(this._nextUrl)).data)
        }
    }
}
function findProjects(query = {}) {
    return new ProjectCollection(_url('project', query).toString())
}
  • Вопрос задан
  • 174 просмотра
Пригласить эксперта
Ответы на вопрос 1
Fragster
@Fragster
помогло? отметь решением!
Изучи вот это: https://v3.ru.vuejs.org/ru/api/built-in-components...
https://router.vuejs.org/guide/migration/#router-v...

А лучше пихай данные из api в стор vuex https://vuex.vuejs.org/ru/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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