1
1

More than 3 years have passed since last update.

Vueの$routeがどうしてもundefinedになってしまう

Posted at

反省文

Vueでルーターの設定をしようとしていましたが、なぜか何をやっても設定がVueに反映されません。

下のどちらかのコードには間違いがあります。

a.js
import router from "./router";

new Vue({
  router,
  render: h => h(App)
}).$mount("#app");
b.js
import Router from "./router";

new Vue({
  Router,
  render: h => h(App)
}).$mount("#app");

a.jsの方は動きますが、b.jsの方は動きません。動かそうとするとこんなエラーが出て止まります。

vue.esm.js?efeb:628 [Vue warn]: Error in render: "TypeError: Cannot read property 'meta' of undefined"

found in

---> <App> at src/App.vue
       <Root>

上記の該当箇所はこんなかんじです。

export default {
  computed: {
    layout() {
      console.log(this);
      return this.$route.meta.layout || "default"; // << ココでエラー発生
    }
  }
};

$routeに何も代入されていません。

この様に書き直すと、今までのエラーが嘘の様に動き出しました。

b.js
import Router from "./router";

new Vue({
  router: Router,
  render: h => h(App)
}).$mount("#app");

routerと、オブジェクトのキーをちょいと書き加えてやるだけ。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1