正传

一:组件
1·1:什么是组件:

组件用于的封装可重复使用的ui代码块,扩展HTML标签的功能

组件的本质:自定义标签

1·2:组件的多行标签只能有一个根节点

(vue只允许模板里存在一个根节点)

<template>
  <div>
      <!-- Vue只允许模板里存在一个根节点。 -->
      <h1>我是一个组件</h1>
      <h1>我是一个组件</h1>
      <h1>我是一个组件</h1>
  </div>
</template>
1·3:vue组件的data为什么是一个函数

组件是可复用的vue实例,一个组件被创建好之后,就可能被用在各个地方,

而组件不管被复用了多少次,组件中的data数据都应该是相互隔离,互不影响的

基于这一理念,组件每复用一次,data数据就应该被复制一次,

之后,当某一处复用的地方组件内data数据被改变时,其他复用地方组件的data数据不受影响

语法:

data(){
  return {
  		key:val
  }
}
1.4:组件中关于v-for指令的问题

在组件中使用v-for,必须给后面添加一个key

所谓的key值是我们新遍历出来的内容的唯一标识

让当前的这个元素在进行dom操作的时候通过这个唯一的标识提供更快的速度

<template>
<div>
  <h1 v-for="(v,i) in arr" v-bind:key="i">{{v}}</h1>
</div>

</template>
1.5:组件中样式设置

全局样式设置: app.vue 的style中 注意不加scoped

局部样式设置:在组件自身的style中设置 样式 但是要加scoped 表示当前样式仅对当前组件生效

二:父子组件的作用域

组件相当于完整的vue实例

组件与vue实例间作用域独立(组件与vue实例中data数据不互通)

即就是父子组件间作用域相互独立

三:父子组件
3·1:父子组件的概念

父子组件就是包含嵌套组件关系

组件之间建立的关系叫做组件的引用

3·2:组件的引用流程
  • 引用
  • 调用
  • 使用
<template>
  <div>
      我是父
      <!-- 3.使用 -->
      <Zi/>
  </div>
</template>

<script>
// 1.引用
import Zi from "./zi.vue"
export default {
// 2.调用
    components:{
        Zi
    }
}
</script>

<style scoped></style>
四:props:正向传值

概念:prop选项用来声明期待获得的数据的

props的本质是一个元素属性

作用:在组件创建的时候无值 在调用的时候向内部传入数据 进行展示

4·1:基本使用

书写位置:和data,methods,watch同级的位置上

用来定义 接受父组件传递过来的参数

4·2:语法
props:[“接受变量1”,“接受变量2”,“接受变量3”,......n]

子组件

<template>
  <div class="item">
    <img :src="imgurl"/>
    <p>{{text}}</p>
  </div>
</template>

<script>
export default {
    props:["imgurl","text"]
};
</script>
<style>
img{
    width: 60px;
    height: 40px;
}
</style>

父组件

<template>
  <div class="content">
    <Son v-for="(v,i) in arr" :key="i" :imgurl="v.imgurl" :text="v.text"></Son>
  </div>
</template>

<script>
import Son from "./3zitabbar"
export default {
    components:{
        Son
    },
    data(){
        return{
            arr:[
                {imgurl:"./img1.jpg",text:"你的"},
                {imgurl:"./img2.jpg",text:"商城"},
                {imgurl:"./img3.jpg",text:"订单"},
                {imgurl:"./img4.jpg",text:"关于"}
            ]
        }
    }
}
</script>

<style scoped>
.content{
    position: fixed;
    bottom: 0;
    display: flex;
    width: 100%;
}
</style>
4·4:props的进阶使用

【props的验证】:对props传递过来的参数进行验证 验证是否是我们需要的数据

props:{
//验证数据类型
props变量:Number,

​ //验证多个数据类型
​ props变量:[Number,String],

​ //不能为空
​ props变量:{
​ type:数据类型,
​ required:true
​ }

​ //默认值
​ props变量:{
​ type:数据类型,
​ default:默认值
​ }
}

4.5:关于props验证的面试题

为什么写的有问题 但是props验证没有错误提示?
生产版本也就是压缩版的文件删除了警告,所以使用非压缩版的js文件就可以看到错误

​ type:数据类型,
​ required:true
​ }

​ //默认值
​ props变量:{
​ type:数据类型,
​ default:默认值
​ }
}

4.5:关于props验证的面试题

为什么写的有问题 但是props验证没有错误提示?
生产版本也就是压缩版的文件删除了警告,所以使用非压缩版的js文件就可以看到错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值