创新实训——005

本篇文章介绍Vue.js(以下简称vue)的组件化特性,非常好用

组件化

为什么当时我选择了vue,因为在我接触为数不多的前端框架中,vue的组件化特性惊艳到了我,组件化的意思就是指页面是可以由一个个组件拼接起来的。
比如所有页面都会有一个导航栏,那么就可以将该导航栏单独作为一个组件,然后在App.vue中引入即可,导航栏作为一个单独组件navMenu.vue,代码如下:

<!--导航栏组件-->
<template>
    <el-menu
      :default-active="$route.path"
      class="el-menu-demo"
      mode="horizontal"
      @select="handleSelect"
      background-color="#1e1e1e"
      text-color="#fff"
      active-text-color="#ffd04b"
      :router='true'>
      <el-menu-item index="/">总体概况</el-menu-item>
      <el-menu-item index="/statusPage">服务状态</el-menu-item>
      <el-menu-item index="/securePage">安全审计</el-menu-item>
      <el-menu-item index="/ipPage">IP详情</el-menu-item>
    </el-menu>
</template>
<script>
  export default {
    data() {
      return {
      };
    },
    methods: {
      handleSelect(key, keyPath) {
        console.log(key, keyPath);
      }
    }
  }
</script>

然后在App.vue中注册引入,如下所示:

<template>
  <div>
    <navMenu/>
    <router-view/>
  </div>
</template>

<script>
import navMenu from './components/PageComponents/navMenu'
export default {
  name: 'App',
  components:{
    navMenu
  }
}
</script>

然后这样在路由中的所有页面顶部都会有一个导航栏。

父组件向子组件传值

vue中每个页面都可以看成是一个组件,然后组件中可以嵌套组件,因此就可以分为父组件与子组件,然后父子组件中可以相互传值,而且并不复杂,这一点我感觉非常好,下面就先介绍一下父组件如何向子组件传值。
假设父组件为A,子组件为B,首先子组件B中需要在props中定义从父组件传过来的值,类似这样:

<script>
  export default {
    props:{
        urlType:{type:String,default:"all"},
        logPara:{type:String,default:"----"}
    },
    data() {
      return {
      }
    }
  }
</script>

urlType和logPara就是父组件向子组件要传的值,需要事先定义好类型和默认值,而且在子组件中不要改这两个值(因为父组件相当于级别高一些),这两个值可以用this引用
然后在父组件A中<B :logPara="logPara" :urlType="urlType"></B>这样传值,logPara和urlType会实时反馈给子组件B,子组件可以用watch来监视这两个值的变化,从而达成相关功能使用,watch之后再讲,父组件向子组件传值基本上就是这样,下面介绍子组件向父组件传值。

子组件向父组件传值

假设父组件为A,子组件为B,B向A传值,首先B中在传值的地方例如需要这样做:this.$emit('func',this.logPara)
目前就我的使用情况来说,传的值必须在data的return中定义,然后func要与父组件相对应
父组件中为<B @func="getDataFromChild"></B>,然后在methods中定义getDataFromChild:function(data)
此时若子组件有传过来的值,父组件就可以接收data。
如果子组件要传给父组件多个值,可以这样,子组件:this.$emit('func',this.logPara1,this.logPara2…),父组件:<B @func="getDataFromChild(arguments)"></B>getDataFromChild:function(data),此时父组件接收的值data为一个数组,可用下标如data[0]形式调用对应的参数。
关于Vue.js的组件化特性介绍到此,不得不说,确实好用,因为这样组件可以复用!很多页面可能都是由几个相同的组件构成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值