У меня есть 3 компонента в моем «поиске» (родительском) представлении; 'SearchForm' , 'ResultList' , 'DetailPage' .Я переключаюсь с SearchForm на ResultList, когда получаю ответ от бэкэнда.
<keep-alive>
<component v-bind:is="currentComponent"></component>
</keep-alive>
Когда ответ получен в моей 'SearchForm', я сохраняю его в searchBus;
searchBus.$emit('searchIssue', response.data);
Затем в моем ResultList я хочу получить его снова и отобразить результаты;
mounted() {
searchBus.$on(['searchIssue'], (search) => {
this.table_items = search;
});
}
Я отображаю анимацию загрузки (также компонент), пока ответ не будет полностью загружен и не отобразится ResultList.
Из-за жизненного цикла Vue все работает, когда все компоненты отображаются в одном представлении, поскольку они уже прослушивают при обновлении шины.
Должен ли я выбрать другой подход? Например, используя v-show
или передать ответ обратно в Parent и вставить его снова с помощью prop (Idk, если он будет работать, поскольку не все компоненты имеюттот же реквизит).
Есть ли способ использовать шину в любом случае? И как можно решить, собрав одну линейную иерархию и все еще скрывая нерелевантные компоненты?(SearchForm -> ResultList -> DetailPage)