Можем ли мы передать объект JSON непосредственно на другой маршрут через маршрутизатор Vue без использования JSON.stringify

#vue.js #vue-router

Вопрос:

Когда я изначально пытался передать объект, представляющий собой массив других объектов (полученных из сообщения axios), на другой маршрут, подобный этому:

 this.$router.push({
    name: "EMR",
    params: {
        records: response,
    },
});
 

Я получил массив, подобный следующему:

 [Object Object],
[Object Object],
...
[Object Object]
 

Я мог бы исправить это с помощью:

 this.$router.push({
    name: "EMR",
    params: {
        records: JSON.stringify(response),
    },
});
 

А затем используйте следующее в маршруте назначения:

 created () {    
    this.clinical_records = JSON.parse(this.$route.params.records)   
}
 

Это правильный способ сделать это? Или мне чего-то не хватает?

Ответ №1:

Вы можете передать данные в качестве реквизита через vue-маршрутизатор: https://router.vuejs.org/guide/essentials/passing-props.html#object-mode

Редактировать

Пример:

В конфигурации маршрута вы активируете параметры передачи в качестве реквизитов:

 routes: [
  {
    name: "EMR",
    path: "your/path/to/emr"
    props: {
      default: true,
    },
  },
  // other routes...
]
 

В целевом компоненте вы объявляете свою опору:

 props: {
  clinical_records: Array,
}
 

Тогда вы сможете использовать напрямую:

 this.$router.push({
    name: "EMR",
    params: {
        clinical_records: response,
    },
});
 

Комментарии:

1. К сожалению, это не сработало. У меня все еще был похожий массив, когда я добавил эти реквизиты