Как при нажатии открыть новый компонент Vue, передав туда объект?
Я создаю форум на Vue + Laravel. Каждый отдельный пост в форуме - компонент Vue, который содержит в себе объект с полями поста(текст, фото и т.д.). Все посты отображаются корректно. Сделал новый Vue компонент, в котором хочу уже отображать конкретный пост и комментарии. Вопрос - как при нажатии на пост в списке постов мне открывать этот компонент поста с переданным в него объектом. (Как при клике на компонент-пост в списке постов, открыть нужный пост и получить там объект от нужного поста). Извиняюсь, если непонятно объяснил.
Ответы (1 шт):
Я сам новичок в этом, но как раз подобными вещами занимаюсь сейчас. Попробую присоветовать как сейчас понимаю...
Для каждого поста в таблице постов нужно предусмотреть поле slug. Обычно его делают уникальным для однозначного указания на запись в таблице. Но, если в форуме предусмотрены редакции поста, можно этим полем указывать на цепочку редакций поста, плюс дату создания редакции (уникальный составной ключ = slug + created_at). Собственно, из этой связки и нужно формировать URL.
А вот далее два варианта. Первый - вызывать вьюху для просмотра поста. И второй вариант - делать AJAX-запрос и результат передавать в нужный Vue-компонент. Использовать библиотеку axios, которая сразу устанавливается при развертывании нового Laravel-проекта.
Дам две интересные ссылки:
- Создание блога на Laravel (там на пальцах о маршрутизации в Laravel)
- Использование Laravel + Vue (там про компоненты, передачу данных и Vue-маршрутизацию)
Лично мне эти видосы были крайне полезны для начала понимания.
И да... На сколько я понимаю, напрямую vue-компоненты не вызываются. Они должны быть смонтированы с какой-то вьюхой. Либо текущей, либо далее вызываемой.