IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 结合项目带你了解Vue组件重复利用及父组件传递数据给子组件 -> 正文阅读

[JavaScript知识库]结合项目带你了解Vue组件重复利用及父组件传递数据给子组件


最近在学习Vant移动端ui+vue的项目
记录下tabbar组件使用过程中的页面切换
在这里插入图片描述
我这边采取的是通过用户点击不同的tabbar下标值后,进行路由的跳转,跳转到对应的界面去,以下就是使用的项目

在这里插入图片描述
对于路由的创建我这边就进行讲解了,有需要的可以看官网

1.需求:

由于有4个界面想要Tabbar组件,而且我又不想每个页面都添加Vant的Tabbar标签信息和方法
在这里插入图片描述
于是我们就可以把最完整的Tabbar信息搞个页面当成组件,这样需要的时候我们就引入我们自己定义好的Tabbar组件

2.引入自定义组件

只需三步骤:
1 . 引入自定义组件位置并且取名称

// 1.引入自定义的组件 需要注意引入正确的组件位置
import tabbar from "./component/tabbar"

2 . 添加我们自己取的组件名称

  components: {
    //2.添加我们自己取的组件名称
    tabbar
  },

3 . 在需要的地方引入自己取名的标签

    <!--引入的组件-->
    <tabbar></tabbar>

步骤一和二都是在script标签内定义的
在这里插入图片描述
演示效果:

我点击订单界面,路由已经跳转到订单页面,细心的你有没有发现tabbar还是锁定在首页,并且我不管点击哪里tabbar都是在首页显示,而不能跟谁界面切换变化

在这里插入图片描述
这里就引入出父组件传递数据给子组件的概念

3.父组件传递数据给子组件

为什么会出现上面这个情况,因为我们自己定义的组件中是这样写的

Tabbar组件代码:

<template>
  <van-tabbar v-model="active" @change="onChange">
    <van-tabbar-item icon="home-o">首页</van-tabbar-item>
    <van-tabbar-item icon="friends-o">线报</van-tabbar-item>
    <van-tabbar-item icon="search">订单</van-tabbar-item>
    <van-tabbar-item icon="setting-o">我的</van-tabbar-item>
  </van-tabbar>
</template>
<script>
export default {
  components: {},
  data() {
    return {
      active: 0,
    };
  },
  methods: {
    onChange(index) {
      if (index == 0) {
       //路由的跳转方式
        this.$router.push('index');
      }
      if (index == 1) {
        this.$router.push('informant');
      }
      if (index == 2) {
        this.$router.push('order');
      }
      if (index == 3) {
        this.$router.push('userInfo');
      }
    }
  },
};
</script>

代码中是通过active变化来改变显示Tabbar的标签信息,因为我们组件定义active就是0所以Tabbar一直都显示首页被选中,想要页面变化tabbar展示的选中标签也跟着改变那么就想要把active也改变。

数据传递给组件的方式也很简单
在组件中定义

  props: {
    tabbarIndex: { //用于记入父组件传递过来的tabbar下标
      type: Number,//我这边使用到的是数字,看你们自己传递的类型是啥这就改啥
      required: true//表示必须传递
    }
  }

然后还需要动态更改active的值

active: this.tabbarIndex,//需要跟着父组件传递过来的值

在这里插入图片描述
改好后还需要修改使用该组件传入当前页面的active值
例子:把订单页面进行修改
最开始引入组件但是没有定义传入的值

    <!--引入的组件-->
    <!--<tabbar></tabbar>-->

需要传递数据给组件需要使用下面标签,:tabbarIndex就是我们组件定义的名称也可以使用:tabbar-index(短横线命名法)表示

<!--修改传递值给组件-->
    <tabbar :tabbarIndex="active"></tabbar>

然后需要当前页定义active在Tabbar中位于第几
在这里插入图片描述
演示最终结果:

完美解决

在这里插入图片描述
在这里插入图片描述

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-20 22:57:21  更:2022-06-20 22:58:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:59:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码