1. 使用 <component>标签实现组件切换

<component> 是Vue提供的标签语法;有一个is属性,is的作用就是显示指定的组件

<template>
<div class="detail">
<p>父组件</p>
<hr>
<button @click="componentName='my-son1'">首页</button>
<button @click="componentName='my-son2'">电影</button>
<button @click="componentName='my-son3'">关于</button>
<hr>
<component :is="componentName"></component>
</div>
</template> <script>
import son1 from './son1.vue'
import son2 from './son2.vue'
import son3 from './son3.vue'
export default {
name: "order",
components: {
'my-son1': son1,
'my-son2': son2,
'my-son3': son3
},
data() {
return {
componentName: 'my-son1' // 默认展示第一个子组件
}
}
}
</script> <style lang="less" scoped>
.detail {
margin: 5px;
padding: 10px;
border: 2px dashed salmon;
height: 200px;
background-color: #f6f6f6;
p {
color: salmon;
}
}
</style>

总结:使用 component 标签切换组件时,没有触发路由的改变,而且当组件切换时,不会记录组件中的数据变化

2.  原生实现SPA

使用 component 标签的:is属性来切换组件

总结:单页面应用程序中,实现组件切换的技术点,就是 监听 window.onhashchange 事件:只要浏览器监听到 Hash 值的变化,就会触发指定的事件处理函数

<template>
<div>
<h1>App根组件</h1> <a href="#/home">首页</a>
<a href="#/movie">电影</a>
<a href="#/about">关于</a> <component :is="comName"></component>
</div>
</template> <script>
// 导入需要的子组件
import Home from './Home.vue'
import Movie from './Movie.vue'
import About from './About.vue' export default {
data() {
return {
comName: 'my-home'
}
},
created() {
// 只要浏览器监听到 Hash 值的变化,就会触发指定的事件处理函数
window.onhashchange = () => {
const hashStr = window.location.hash.slice(1)
switch (hashStr) {
case '/home':
this.comName = 'my-home'
break
case '/movie':
this.comName = 'my-movie'
break
case '/about':
this.comName = 'my-about'
break
}
}
},
// 注册私有子组件
components: {
'my-home': Home,
'my-movie': Movie,
'my-about': About
}
}
</script>

Vue-router(1)之component标签的更多相关文章

  1. Vue内置的Component标签用于动态切换组件

    html <div id="app"> <component :is="cut"></component> <butt ...

  2. vue router 只需要这么几步

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  3. vue组件大集合 component

    vue组件分为全局组件.局部组件和父子组件,其中局部组件只能在el定义的范围内使用, 全局组件可以在随意地方使用,父子组件之间的传值问题等. Vue.extend 创建一个组件构造器 template ...

  4. Vue.js 2.x笔记:路由Vue Router(6)

    1. Vue Router简介与安装 1.1 Vue Router简介 Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,构建单页面应用. Vue Rout ...

  5. 深入浅出的webpack构建工具--webpack4+vue+router项目架构(十四)

    阅读目录 一:vue-router是什么? 二:vue-router的实现原理 三:vue-router使用及代码配置 四:理解vue设置路由导航的两种方法. 五:理解动态路由和命名视图 六:理解嵌套 ...

  6. python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)

    昨日内容回顾 0. 组件注意事项!!! data属性必须是一个函数! 1. 注册全局组件 Vue.component('组件名',{ template: `` }) var app = new Vue ...

  7. Vue router 的使用--初级

    在说 VueRouter 之前,首先要弄明白vueRouter 是干什么的,有什么用 说出来其实很简单,就是一个模板替换的问题,当路由改变的时候,把和路由相关的模板显示出来,就是这么简单.但是,当我们 ...

  8. Vue Router的入门以及简单使用

    Vue Router 是Vue官方的路由管理器,是Vue用来实现SPA的插件.它和 Vue.js 的核心深度集成,让构建单页面应用(SPA)变得易如反掌. 基本概念: 路由:是一种映射关系,是 “pa ...

  9. vue router 几种方式对比 (转载)

    <div id="app"> <h1>Hello App!</h1> <p> <!-- 使用 router-link 组件来导 ...

  10. vue.js利用vue.router创建前端路由

    node.js方式: 利用node.js安装vue-router模块 cnpm install vue-router 安装完成后我们引入这个模板! 下载vue-router利用script引入方式: ...

随机推荐

  1. Spark Scheduler 模块(上)

    在阅读 Spark 源代码的过程中,发现单步调试并不能很好的帮助理解程序.这样的多线程的分布式系统,更好的阅读源代码的方式是依据模块,分别理解.   在包 org.apache.spark 下面有很多 ...

  2. 使用delphi TThread类创建线程备忘录

    备忘,不常用经常忘了细节 TMyThread = class(TThread) private { Private declarations } protected procedure Execute ...

  3. poj 1854 Evil Straw Warts Live 变成回文要几次

    Evil Straw Warts Live Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1799   Accepted: ...

  4. ArcoLinux美化教程

    ArcoLinux美化教程 1. 前言 ArcoLinux已经足够美观,这里主要是讲解如何配置桌面特效 2. 安装compiz $ yay -S compiz 3. 用compiz替换xfwm4 编辑 ...

  5. VS2013+HALCON13

    HALCON安装与配置(VS2013+HALCON13) 2017-06-23 16:08:25 坚强的羊脂球 阅读数 4574更多 分类专栏: HALCON   配置主要分为三部分: 1)VS调用H ...

  6. PHP-文件目录操作

       使用递归遍历指定文件目录及其子目录下的所有文件 思路: 1.打开目录: 2.遍历目录,判断是否还是目录.是目录则返回第1步,不是目录进入第三步: 3.把文件名显示出来 使用到的文件目录操作函数: ...

  7. 六十八、SAP中内表插入的三种方法之二,COLLECT的使用,用于计算数字字段之和

    一.使用COLLECT时,如果关键字没有,那么插入,如果有则求所有关键字列的和,代码如下 二.sy-index在循环中,每次循环从1开始递增 三.查看T_DATA数据 四.如下 五.循环时候,我们查看 ...

  8. Cheat Engine 入门操作

    Cheat Engine(简称CE,中文名-作弊引擎),用于查找.修改内存数据,是游戏逆向的基础工具. 本文仅介绍基础操作. 1.打开进程 运行游戏程序,并将CE附加到进程 2.寻找数据地址,并修改数 ...

  9. intellij idea 怎么全局搜索

    1.Ctrl+N按名字搜索类 相当于eclipse的ctrl+shift+R,输入类名可以定位到这个类文件,就像idea在其它的搜索部分的表现一样,搜索类名也能对你所要搜索的内容多个部分进行匹配,而且 ...

  10. app页面连接到服务器的数据库

    第一步在服务器上写好servlet用于和数据库交互,目前我只写了添加. 第二步app端使用HttpURLConnection连接交互. 效果图: 增加了一条数据:第十一条