Как при нажатии открыть новый компонент Vue, передав туда объект?

Я создаю форум на Vue + Laravel. Каждый отдельный пост в форуме - компонент Vue, который содержит в себе объект с полями поста(текст, фото и т.д.). Все посты отображаются корректно. Сделал новый Vue компонент, в котором хочу уже отображать конкретный пост и комментарии. Вопрос - как при нажатии на пост в списке постов мне открывать этот компонент поста с переданным в него объектом. (Как при клике на компонент-пост в списке постов, открыть нужный пост и получить там объект от нужного поста). Извиняюсь, если непонятно объяснил.


Ответы (1 шт):

Автор решения: Majestio

Я сам новичок в этом, но как раз подобными вещами занимаюсь сейчас. Попробую присоветовать как сейчас понимаю...

Для каждого поста в таблице постов нужно предусмотреть поле slug. Обычно его делают уникальным для однозначного указания на запись в таблице. Но, если в форуме предусмотрены редакции поста, можно этим полем указывать на цепочку редакций поста, плюс дату создания редакции (уникальный составной ключ = slug + created_at). Собственно, из этой связки и нужно формировать URL.

А вот далее два варианта. Первый - вызывать вьюху для просмотра поста. И второй вариант - делать AJAX-запрос и результат передавать в нужный Vue-компонент. Использовать библиотеку axios, которая сразу устанавливается при развертывании нового Laravel-проекта.

Дам две интересные ссылки:

  1. Создание блога на Laravel (там на пальцах о маршрутизации в Laravel)
  2. Использование Laravel + Vue (там про компоненты, передачу данных и Vue-маршрутизацию)

Лично мне эти видосы были крайне полезны для начала понимания.

И да... На сколько я понимаю, напрямую vue-компоненты не вызываются. Они должны быть смонтированы с какой-то вьюхой. Либо текущей, либо далее вызываемой.

→ Ссылка