Передача данных реквизита компоненту, к которому я могу получить доступ только с помощью маршрутов

Мой файл роутера

import DomainAction from './components/domainaction/DomainAction.vue'
...
{ path: '/domainaction' , component: DomainAction },
...

Файл ссылки на маршрутизатор

...
<router-link to = "/domainaction" tag = "li" class = "list-group-item "class-active = "active" exact > Domain Action</router-link>
...

С других маршрутов, идущих в домен, действие Route, подобное этому

...

itemAction(action,data){
          if (action=='Suspend'){
            this.$router.push('/domainaction')
          }
        }
...

Компонент My Actual DomainAction

<template>
.......
</template>
<script>
export default {
  props:['data'],
  data(){
    return{
.........
</script>

Я хочу передать реквизиты данных из функции itemAction. Как мне этого добиться? Я новичок в vue js. Извините, если мой вопрос не очень полный.

Что находится в свойстве данных? Итак, какие данные вам нужно передать компоненту?

Vladislav Ladicky 04.11.2018 10:57

@VladislavLadicky Из функции itemAction(action,data) я хочу передать этот data, который является объектом json, компоненту действия домена

Rohit Kumar 04.11.2018 11:20
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
589
3

Ответы 3

вы должны использовать vuex

props предназначены для передачи переменных из компонента родитель в компоненты ребенок,
поэтому его необычно использовать, когда вы хотите обмениваться данными между страницами.

пример правильного использования prop:
parent.vue

<child-component :data = "data">
<child-component :data = "anotherData">

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

аналогичный вопрос:
https://stackoverflow.com/a/40955110/10440108

Обратите внимание, что Сосмии прав насчет использования Vuex для обмена данными между компонентами.

Но если вы изучаете передачу данных сомы в качестве параметров с использованием маршрутов, вам нужно немного изменить способ определения маршрутов компонентов. Используя параметры маршрутизатора, вы сможете передавать реквизиты, затем вы можете нажать маршрут и добавить параметры. См. Пример ниже.

И связанный с этим вопрос: Передача реквизита с помощью программной навигации Vue.js

const DomainActionA = {
  props: ['dataProp'],
  template: '<div>A data: {{dataProp}}</div>'
 }
const DomainActionB = {
  props: ['dataProp'],
  template: '<div>B data: {{dataProp}}</div>'
 }

const routes = [
  {
    path: '/DomainActionA/:dataProp',
    name: 'domainA',
    component: DomainActionA,
    props: true },
  { 
    path: '/DomainActionB/:dataProp',
    name: 'domainB',
    component: DomainActionB,
    props: true
   }
]

const router = new VueRouter({
  routes
})

const app = new Vue({
  router,
  methods: {
    goToA() {
       this.$router.push({name: 'domainA', params: {dataProp: "blah"}})
    },
    goToB() {
       this.$router.push({name: 'domainB', params: {dataProp: "bleh"}})
    }
  }
}).$mount('#app')
<script src = "https://unpkg.com/vue/dist/vue.js"></script>
<script src = "https://unpkg.com/vue-router/dist/vue-router.js"></script>
<div id = "app">
  <h1>Hello Router!</h1>
  <div>
   <button @click = "goToA()">Go A with params: { data: "blah" }</button>
   <button @click = "goToB()">Go B with params: { data: "bleh" }</button>
  </div>
  <div>
    <h2>router view</h2>
    <router-view></router-view>
  </div>
</div>

Что ж, если вам просто нужно передать свойство (значение) компоненту, вам просто нужно использовать передачу данных через реквизиты маршрутизатора: режим https://router.vuejs.org/guide/essentials/passing-props.html#function-. И получайте, используя this.$router внутри компонента. В качестве альтернативы вы можете использовать Vuex для передачи данных. https://vuex.vuejs.org/ Чтобы вы могли установить связь между компонентами за пределами этой формы, о которой было сообщено, оба компонента должны быть родительскими и дочерними, то есть 1 вызывает другой внутри него, поэтому да, вы можете передавать значения, в противном случае он должен использоваться, или путь к данным через route или через vuex, который является менеджером статуса vue. Существует также следующая возможность, как указано в этом вопросе. Передача props компонентам Vue.js, созданным Vue-router

Другие вопросы по теме