как передать объект props с помощью «this.$ router.push ()»

#vue-router

#vue-маршрутизатор

Вопрос:

Я использую vue-router 4 .

Я передал объект props из this.$router.push() . Но я получил только [object Object] то String , что распечатал.

Как я могу сделать, чтобы получить следующий результат как Object ?

 {
    roomDimension: {
        width: 15,
        length: 20,
    }
}
  
 >>> in package.json
                              
...
 "vue-router": "4.0.0-rc.1"
...
                              

>>> in router/index.js
                              
import { createWebHistory, createRouter } from "vue-router";
import UploadRoom from "../views/UploadRoom.vue";
import EditRoom from "../views/EditRoom.vue";

const routes = [
...
  {
    path: "/upload-room",
    name: "UploadRoom",
    component: UploadRoom,
  },
  {
    path: "/edit-room",
    name: "EditRoom",
    component: EditRoom,
    props: true,
  },
...
];
const router = createRouter({
  history: createWebHistory(),
  routes,
});
export default router;

                              

>>> in UploadRoom.vue
                              
...
this.$router.push({
  name: "EditRoom",
  props: {
    roomData: {
      roomDimension: {
        width: 15,
        length: 20,
      },
    },
  },
});
...
                              

>>> in EditRoom.vue
                              
...
import Model from "../components/Model.vue";

export default {
  name: "EditRoom",
  components: {
    Model,
  },
  props: {
    roomData: {
      type: Object, 
      required: true,
    }
  },
  data() {
    return {
      // 
    };
  },
  created() {
    console.log(this.roomData)
    // got like this >>> [object Object] <<<
  }
};
...
                              
  

Ответ №1:

https://router.vuejs.org/guide/essentials/passing-props.html «Когда props имеет значение true, route.params будет установлен в качестве компонента props».

Вы должны поставить props = true . Без этого ваши данные будут доставлены в $route.params.roomData . Не в реквизите.

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

1. Спасибо за ваш ответ. >>> Вы должны поставить props = true . Без этого ваши данные будут доставлены в $route.params.roomData . Не в реквизите. <<< Я уже установил props:true router/index.js . У меня это не работает.