Я создаю приложение, которое монтирует сотни или даже тысячи экземпляров компонента vue в одном представлении.Каждый компонент имеет идентификатор, который ссылается на объект в хранилище vuex.
<my-component :id="item1"></my-component>
<my-component :id="item2"></my-component>
<my-component :id="item3"></my-component>
...
Хранилище:
state: {
myComponentData: [
{
id: 'item1',
name: 'Hawaiian Shirt',
selected: false,
// ...
},
// ...
]
}
В my-component
я ищу его объект в магазине и сохраняю его в вычисленном свойстве:
computed: {
myComponentData: function () {
return this.$store.state.myComponentData.find(el => el.id === this.id);
},
isSelected: function () {
return this.myComponentData.selected;
},
// ...
}
Свойствами объекта в хранилище можно манипулировать, взаимодействуя с самим компонентом или другими компонентами в другом месте приложения.
Проблема в том, что когда я пытаюсь запустить это с несколькими сотнями или более 1000 элементов, требуется 30или более секунд для загрузки.
Если я удаляю вычисленные свойства или заменяю их статическими значениями, то страница загружается без проблем.У меня возникают проблемы с запаздыванием только при попытке загрузить все вычисленные свойства из магазина.
Есть ли способ повысить производительность при загрузке многих (более 1500) компонентов Vue, которые используют вычисленные свойства и Vuex?Я рассмотрел динамические / асинхронные компоненты, vue-async-computed и vue-rx как возможные решения, но я не уверен, что поможет в этом случае.