🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1282閲覧

route-viewを使った動的表示がされない

tomofumi

総合スコア11

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2019/10/20 13:21

前提・実現したいこと

現在udemyのvue.js教材で勉強している最中ですが、route-viewを使った動的表示がされなく詰まっていました。
pathが'/'の時のデフォルトをHome.vueのテンプレート内容にしたいのですが表示されません。
App.vue自体が表示されていることは確認済です。

また初めての質問になるため、質問方法のアドバイスがあればぜひお願いします。

発生している問題・エラーメッセージ

ありません。

該当のソースコード

####router.js

javascript

1import Vue from 'vue'; 2import Router from 'vue-router'; 3 4const Home = () => import( /* webpackChunkName: 'Home' */ './views/Home.vue'); 5const Users = () => import( /* webpackChunkName: 'Users' */ './views/Users.vue'); 6const UsersPosts = () => import( /* webpackChunkName: 'UsersPosts' */ './views/UsersPosts.vue'); 7const UsersProfile = () => import( /* webpackChunkName: 'UsersProfile' */ './views/UsersProfile.vue'); 8const HeaderHome = () => import( /* webpackChunkName: 'HeaderHome' */ './views/HeaderHome.vue'); 9const HeaderUsers = () => import( /* webpackChunkName: 'HeaderUsers' */ './views/HeaderUsers.vue'); 10 11 12Vue.use(Router); 13 14export default new Router({ 15 mode: "history", 16 routes: [{ 17 path: '/', 18 components: { 19 default: Home, 20 header: HeaderHome 21 }, 22 beforeEnter(to, from, next) { 23 next(false) 24 } 25 }, 26 { 27 path: '/users/:id', 28 components: { 29 default: Users, 30 header: HeaderUsers 31 }, 32 props: { 33 default: true, 34 header: false 35 }, 36 children: [{ 37 path: "posts", 38 component: UsersPosts 39 }, { 40 path: "profile", 41 component: UsersProfile, 42 name: "users-id-profile" 43 }] 44 }, { 45 path: '*', 46 redirect: '/' 47 } 48 ], 49 scrollBehavior(to, from, savedPosition) { 50 return new Promise(resolve => { 51 this.app.$root.$once('triggerScroll', () => { 52 let position = { 53 x: 0, 54 y: 0 55 }; 56 if (savedPosition) { 57 position = savedPosition; 58 } 59 if (to.hash) { 60 position = { 61 selector: to.hash 62 }; 63 } 64 resolve(position); 65 }); 66 }); 67 } 68}); 69

####Home.vue

javascript

1<template> 2 <div> 3 <h3>Home</h3> 4 <button @click="toUsers">Usersのページに行く</button> 5 <p>{{count}}</p> 6 </div> 7</template> 8 9 10<script> 11export default { 12 computed: { 13 count() { 14 return this.$store.state.count; 15 } 16 }, 17 methods: { 18 toUsers() { 19 this.$router.push({ 20 name: "users-id-profile", 21 params: { id: 1 } 22 }); 23 } 24 } 25}; 26</script>

試したこと

誤字や文法のミスを公式リファレンスを見ながら確認済みです。

補足情報(FW/ツールのバージョンなど)

json

1{ 2 "name": "udemy-vuejs", 3 "version": "0.1.0", 4 "private": true, 5 "scripts": { 6 "serve": "vue-cli-service serve", 7 "build": "vue-cli-service build", 8 "lint": "vue-cli-service lint" 9 }, 10 "dependencies": { 11 "core-js": "^2.6.5", 12 "vue": "^2.6.10", 13 "vue-loader": "^15.7.1", 14 "vue-router": "^3.1.3", 15 "vuex": "^3.1.1" 16 }, 17 "devDependencies": { 18 "@vue/cli-plugin-babel": "^3.12.0", 19 "@vue/cli-plugin-eslint": "^3.12.0", 20 "@vue/cli-service": "^3.12.0", 21 "babel-eslint": "^10.0.1", 22 "eslint": "^6.5.1", 23 "eslint-config-google": "^0.14.0", 24 "eslint-plugin-vue": "^5.2.3", 25 "vue-template-compiler": "^2.6.10", 26 "webpack": "^4.41.1", 27 "webpack-cli": "^3.3.9", 28 "webpack-dev-server": "^3.8.2" 29 }, 30 "eslintConfig": { 31 "root": true, 32 "env": { 33 "node": true 34 }, 35 "extends": [ 36 "plugin:vue/essential", 37 "eslint:recommended" 38 ], 39 "rules": {}, 40 "parserOptions": { 41 "parser": "babel-eslint" 42 } 43 }, 44 "postcss": { 45 "plugins": { 46 "autoprefixer": {} 47 } 48 }, 49 "browserslist": [ 50 "> 1%", 51 "last 2 versions" 52 ] 53}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

beforeEnter(to, from, next) { next(false) }

があるため、DOMの更新に行く前に処理が終わっているように思えますね。
beforeEnterはなくても動くと思います。
ご参考)
https://router.vuejs.org/ja/guide/advanced/navigation-guards.html

投稿2019/10/21 09:07

8zca

総合スコア559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomofumi

2019/10/21 09:10

かなり初歩的なミスをしていました、、、 ご指摘の通りbeforeEnterをなくしたところ正常に機能しました! ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問