2016-12-02 4 views
0

У меня есть основной компонент, который выбирает список пользователей в Created() методе. Два следующих компонента расширены от основного компонента. В этом случае каждый раз создаваемый метод вызывает вызовы при создании расширенных компонентов. Поэтому у меня есть дополнительный вызов списка извлечения пользователей. Цель - выборка пользователей за один раз и передача ее в расширенные компоненты.Передача данных между расширенными компонентами ИЛИ метод вызова компонента

Например:

https://jsfiddle.net/apokjqxx/45/

В примере мы можем видеть, что Created() метод главных компонент называется два времени, но нужно один раз и передавать данные протяженных компонентов. Какое лучшее решение для этого?

ответ

0

Каждый расширенный компонент - это другой экземпляр объекта, поэтому Created() и выборка выполняются дважды.

Что вам нужно, это еще один фрагмент кода, действующий как хранилище (кеш) для списка вашего товара, этот фрагмент кода должен быть создан один раз и разделен между вашими компонентами.

Vuex, вероятно, является хорошим вариантом для этого «кусок кода»

+0

Я думал о хранилище и еще одном фрагменте кода. Может быть, использовать реквизит ... Vuex - это хорошо, но я хочу попробовать его решить с помощью VueJs. Спасибо – maxxdev

0

Если ваша доля math и physics компонент одни и те же данные, и даже имеют много общего в шаблоне, то почему бы не сделать их один компонент? Это позволит решить ваши дублируется выборки проблемы, и вы можете легко изменить шаблон, окружив свой текущий шаблон с v-for и использовать

data() { 
    return { 
     lists: [ 
      {course: 'math', people: ['mike', 'arnold', 'tony']}, 
      {course: 'physics', people: ['mike', 'arnold', 'tony']} 
     ] 
    }; 
} 

как ваши данные.

+0

Мне нужны разные компоненты, чтобы использовать разные логики с пользователями. Также для каждого компонента будут использоваться пользовательские шаблоны в вкладках. – maxxdev

+0

Ваш пример неверен. У меня есть список (10k) пользователей, и они должны быть отделены курсами и для каждого курса должен быть создан шаблон. Спасибо – maxxdev

+0

@ user3816475 Не совсем понятно о вашей ситуации, но вы можете попробовать [slot] (https://vuejs.org/v2/api/#slot), чтобы родительский компонент вставлял пользовательские шаблоны в предопределенную позицию ребенка. –