Задать вопрос
@konst34

Как передать пропсы через роутинг?

Как передать пропсы через роутинг?
У меня есть такой роутинг:
const routes = [
  {
    path: "/",
    name: "Main",
    component: Main,
    children: [
      {
        path: "",
        component: Section,
      },
      {
        path: "/Catalog",
        name: "Catalog",
        component: Catalog,
        children: [
          {
            path: "/Catalog/Bread",
            component: Bread,
          },
        ],
      },
    ],
  },
];


Мне необходимо из компонента Catalog по адресу "/Catalog" передать значение переменной selected в компонент Bread по адресу "/Catalog/Bread".

Как это можно сделать?

Спасибо за помощь!
  • Вопрос задан
  • 84 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Smirator
Привет. Нужно использовать параметры маршрута. В твоем случае selected из Catalog в Bread.
Я бы попробовал например, так:

<template>
  <div>
    <!-- Компонент Catalog -->
    <router-link :to="{ name: 'Bread', params: { selected: selected } }">Go to Bread</router-link>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selected: 'some_value', // значение selected
    };
  },
};
</script>


В нужном компоненте получил параметры. В твоем случае в Bread.
<template>
  <div>
    <!-- Компонент Bread -->
    <p>{{ selected }}</p>
  </div>
</template>

<script>
export default {
  props: ['selected'],
  mounted() {
    console.log(this.selected); // значение  доступно в этом компоненте через props
  },
};
</script>


Ну и роутинг:
const routes = [
  {
    path: "/",
    name: "Main",
    component: Main,
    children: [
      {
        path: "",
        component: Section,
      },
      {
        path: "/Catalog",
        name: "Catalog",
        component: Catalog,
        children: [
          {
            path: "/Catalog/Bread",
            name: "Bread",
            component: Bread,
            props: true, // это позволит передать параметры маршрута как props в Bread
          },
        ],
      },
    ],
  },
];
Ответ написан
Lastor
@Lastor
В чем сила, брат? В ньютонах.
Во vue3 вы можете применить provide-inject.
В родителе:
const selected = ref({содержимое объекта})
provide('selected', selected)

В детях, внуках, правнуках:
const selected = inject('selected')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы