一、前言

                   1、公共轮播图的实现

                   2、组件传参,公共组件的实现

二、主要内容

1、公共轮播图的实现

  (1)分析:当渲染不同的轮播图页面的时候,①轮播图的图片数据不一样,②轮播图的高度可能不一样(可以通过之前父子组件传参)

  (2)在Common文件夹下创建公共组件MySwiper

  (3)在main.js中注册全局的轮播组件

  1. //注册全局的轮播图组件
  2. import MySwiper from '@/components/Common/MySwiper'
  3. Vue.component(MySwiper.name, MySwiper);

  (4)父组件引入该轮播组件的时候引入轮播组件需要的参数

  1. //给父组件一定要参数,直接用字符串方式传递
  2. //url为请求的地址, myHeight为轮播图的高度
  3.  
  4. <MySwiper url='getlunbo' myHeight='250px'/>

  (5)在公共轮播组件中接收参数,并且使用(如果有些请求的地址带有参数,可以先在父组件那边用$route.params.id拿到对应的id, 在拼接到url里面)

  1. <template>
  2. <mt-swipe :auto="4000" :style="{height:myHeight}">
  3. <!-- v-for组件的时候需要给key,避免vue计算key,来提升性能 -->
  4. <!-- key就是位置的标识 -->
  5. <mt-swipe-item v-for="(item,index) in imgs" :key="index" >
  6. </mt-swipe-item>
  7. </mt-swipe>
  8. </template>
  9. <script>
  10. export default {
  11. name:'MySwiper',
  12. data(){
  13. return {
  14. imgs:[],
  15. }
  16. },
  17. props:['url','myHeight'], //接收到父组件那边来的请求地址,和高度
  18. created(){
  19. this.$axios.get(this.url) //这里用到接收到的url
  20. .then(res=>{
  21. console.log(res.data.message);
  22. this.imgs = res.data.message;
  23. })
  24. .catch(err=>{
  25. console.log('轮播图异常',err)
  26. })
  27. }
  28. }
  29. </script>
  30. <style scoped>
  31. .mint-swipe {
  32. width: 100%;
  33. height:200px;
  34. }
  35. .mint-swipe img {
  36. width: 100%;
  37. }
  38. </style>

2、组件传参,公共组件的实现

  (1)分析:如下所示,下面的这两个页面也有两处不同 ①请求的url地址不同, ②title标题不同

  (2)建立一个公共组件newsDetail  并在index.js中声明

  1. import newsDetail from '@/components/NewsList/newsDatail'
  2.  
  3. export default new Router({
  4.  
  5. routes: [
  6. {
  7. path:'/news/detail',
  8. name:'detail',
  9. component: newsDetail,
  10. props:{
  11. title:'新闻详情' //在跳转的时候直接将这个title传递到公共组件里面
  12. }
  13. },
  14.  
  15. //商品图文介绍
  16. {
  17. path:'/goods/photo/info',
  18. name:'photo.info',
  19. component:newsDetail,//图文介绍和newsDetail公用的是同一个组件
  20. props:{
  21. title:'图文介绍'
  22. }
  23. }
  24. ]
  25. })

  (3)在公共组件中使用props接收

  1. <Navbar :title='title'></Navbar>
  2.  
  3. </div>
  4. </template>
  5. <script type="text/javascript">
  6. export default {
  7. name:'newsdetail',
  8.  
  9. data(){
  10. return{
  11. }
  12. },
  13. props:['title']
  14. }

三、总结

参考:vue-router官方文档:https://router.vuejs.org/zh/guide/essentials/passing-props.html

Vue(小案例_vue+axios仿手机app)_公共组件(路由组件传参)的更多相关文章

  1. Vue(小案例_vue+axios仿手机app)_购物车(二模拟淘宝购物车页面,点击加减做出相应变化)

    一.前言 在上篇购物车中,如果用户刷新了当前的页面,底部导航中的数据又会恢复为原来的: 1.解决刷新,购物车上数值不变                                         ...

  2. Vue(小案例_vue+axios仿手机app)_购物车

    一.前言 1.购物车 二.主要内容 1.效果演示如下,当我们选择商品数量改变的时候,也要让购物车里面的数据改变 2.具体实现 (1)小球从上面跳到下面的效果 (2)当点击上面的“加入购物车按钮”让小球 ...

  3. Vue(小案例_vue+axios仿手机app)_上拉加载

    ---恢复内容开始--- 一.前言                                                                                    ...

  4. Vue(小案例_vue+axios仿手机app)_实现用户评论

    一.前言 1.渲染评论列表 2.点击加载按钮,加载更多    3.提交评论 二.主要内容 1.评论列表一般是注册到一个全局的公共组件中 2.请求后台数据,渲染评论列表 (1)数据格式如下 地址 /ap ...

  5. Vue(小案例_vue+axios仿手机app)_图片列表操作

    一.前言 1.让图片还没有被完全加载出来的时候给用户提示                                       2.图片查看器 二.主要内容 1.让图片还没有被完全加载出来的时候 ...

  6. Vue(小案例_vue+axios仿手机app)_首页(底部导航栏+轮播图+九宫格)

    ---恢复内容开始--- 一.前言                        1.底部导航(两种做法)                                         2.轮播图 ...

  7. Vue(小案例_vue+axios仿手机app)_图文列表实现

    一.前言 1.导航滑动实现   2.渲染列表信息时让一开始加载的时候就请求数据 3.根据路由的改变,加载图文的改变(实现用户访问网站时可能执行的三个操作) 二.主要内容 1.导航滑动实现: (1)演示 ...

  8. Vue(小案例_vue+axios仿手机app)_购物车(计算商品总金额)

    一.前言                 1.计算总金额                 2.点击删除按钮,删除对应的商品信息                 3.当还没结算的时候,当用户跳到其他页面 ...

  9. Vue(小案例_vue+axios仿手机app)_Vuex优化购物车功能

    一.前言         1.用vuex实现加入购物车操作 2.购物车详情页面          3.点击删除按钮,删除购物详情页面里的对应商品 二.主要内容 1.用vuex加入购物车 (1)在src ...

随机推荐

  1. linux文件行首行尾添加或替换

    sed -i 's/\(^.*\)/http:\/\/www.blutmagie.de\/img\/flags\//g' cc.txt sed -i 's/\($\)/.gif/g' cc.txt

  2. SQLServer之删除存储过程

    删除存储过程注意事项 在删除任何存储过程之前,请检查依赖对象,并且相应地修改这些对象. 如果没有更新这些对象,则删除存储过程可能会导致依赖对象和脚本失败. 若要显示现有过程的列表,请查询 sys.ob ...

  3. Linux(Deepin 15.9) - MySQL5.7 安装

    Linux(Deepin 15.9) - MySQL5.7 安装 sudo apt install mysql-server/panda sudo apt install mysql-client/p ...

  4. Springboot配置文件解析器

    @EnableScheduling @MapperScan(value = "com.****.dao") @EnableTransactionManagement @Enable ...

  5. CSS---选择器种类 | 层叠性权重

    一.css选择器种类 1.1,ID选择器 1.2,类选择器 1.3,标签选择器 1.4,后代选择器 1.5,子代选择器 1.6,交集选择器 1.7,并集选择器 1.8,通配符选择器 1.9,属性选择器 ...

  6. he

    弄好这个网站---to thi tha think 好这个---, 很温馨 那时候我还在看. 前一段时候看yibenhaoshu,走出来的才是理性,所以现在才是理性的看待的. 回头再看看两年前的事情, ...

  7. velocity模板引擎 -- java.io.FileNotFoundException: velocity.log (Permission denied)

    问题原因是velocity的日志框架导致(velocity是使用自己封装的日志框架记录日志的),velocity在初始化Logger时,如果没有读取到配置文件,则会使用默认的velocity.log做 ...

  8. [LeetCode] 9. 回文数

    题目链接:https://leetcode-cn.com/problems/palindrome-number/ 题目描述: 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都 ...

  9. 使用Jasypt对SpringBoot配置文件加密(转)

    文章转自   https://www.jianshu.com/p/323ec96c46d2 引入jasypt <dependency> <groupId>com.github. ...

  10. 初学python必备基础知识

    一,编程语言介绍 1.机器语言:直接用二进制编程,直接控制硬件,需要掌握硬件的操作细节 优点:执行效率高   缺点:   开发效率低 2.汇编语言:用英文标签取代二进制指令去编写程序,直接控制硬件,需 ...