Vue做画面跳转,可以通过Router方式。
App .vue
<template>
<div id="app">
<router-view/>
</div>
</template>
<script>
import login from "./components/Login";
router->index.js
import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/components/Login'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: '',
component: Login
}
]
})
这样做的缺点是在浏览器的地址栏,会随着path的改变而改变,比如有可能像下面这样。

这个时候,我们可以使用组件替换方式,切换view。
App.vue
<template>
<div id="app">
<component :is="currentView" @routerView="routerView"></component>
</div>
</template>
<script>
import login from "./components/Login";
import test from "./components/Test";
export default {
name: "App",
data() {
return {
currentView: login,
};
},
components: {
login,
},
methods: {
routerView(viewName) {
switch (viewName) {
case "login":
this.currentView = login;
break;
case "test":
this.currentView = test;
break;
}
},
},
};
</script>
Login.vue
<template>
<div class="hello">
<button @click="handleClick(test)">test</button>
</div>
</template>
<script>
export default {
name: "Login",
data() {
},
methods: {
handleClick(test) {
// 通过emit触发父组件方法, 并传递参数。
this.$emit("routerView", test);
},
},
};
</script>
Test.vue
<template>
<div class="hello">
<h2>test</h2>
</div>
</template>
<script>
export default {
name: 'Test',
data () {
return {
}
}
}
</script>
画面跳转以后,会发现浏览器地址栏始终是http://localhost:8080/