#vue.js #vue-component #vue-router #vuejs3 #vue-router4
#vue.js #vue-компонент #vue-маршрутизатор #vuejs3 #vue-router4
Вопрос:
Теперь я пытаюсь создать интерфейс веб-сайта с использованием Vue3. Но теперь у меня возникла проблема с использованием маршрутизатора. Вот мой код.
Main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
createApp(App).use(router).mount('#app')
router/index.js
import {createRouter, createWebHistory} from 'vue-router'
const Home = { template: '<div>Home</div>' }
const About = { template: '<div>About</div>' }
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About },
]
const router = createRouter({
history: createWebHistory(),
routes
});
export default router;
App.vue
<template>
<img alt="Vue logo" src="./assets/logo.png">
<h1>Hello App!</h1>
<p>
<!-- use the router-link component for navigation. -->
<!-- specify the link by passing the `to` prop. -->
<!-- `<router-link>` will render an `<a>` tag with the correct `href` attribute -->
<router-link to="/">Go to Home</router-link>
<router-link to="/about">Go to About</router-link>
</p>
<!-- route outlet -->
<!-- component matched by the route will render here -->
<router-view></router-view>
</template>
<script>
export default {
name: 'App',
}
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
В представлении маршрутизатора нет содержимого после рендеринга. Как я могу это исправить?
Комментарии:
1. в вашем
App.vue
оберните все с помощью adiv
и добавьтеid: 'app'
, я имею в виду<div id="app">everything here</div>
2. Попробуйте импортировать представления Home amp; About из файла с помощью
import Home from '../views/Home.vue'
3. К сожалению, это тоже не работает.
4. убедитесь, что ваш файл About.vue выглядит следующим образом:
<template> <h1>About</h1> </template>
5. То же, что и раньше.
Ответ №1:
Я попробовал ваш пример здесь, и я получил то же поведение, что и у вас, но после определения компонентов внутри отдельных файлов они работают нормально:
import Contact from "./Contact.vue";
import About from "./About.vue";
const Home = { name: "Home", template: "<div>Home</div>" };// this will not be displayed
const routes = [
{ path: "/", name: "Home", component: Home },
{ path: "/contact", name: "Contact", component: Contact },
{ path: "/about", component: About }
];