自定义组件

自定义组件之间不能写数据
image.png

  1. //自定义组件
  2. <VueList>
  3. sdad
  4. </VueList>

解决办法

slot插槽

接收父组件在调用子组件时,子组件中的内容。
子组件中没有使用slot,那么父组件在调用子组件时子组件中的内容,就不会被接受,也就不会显示在网页中。
image.png

组件之间的传值

父传子

  1. <VueList data-davy = "13" v-bind:test = "12356456">
  2. </VueList>

传递的数据可以是静态数据,亦可以是动态绑定一个动态变量

接受父组件传递的信息

image.png
image.png
接收父组件传过来的数据
父组件传过来的数据,不要直接去修改。
props中的数据可通过,this.变量名 调用,也可以使用mustarche语法使用,例如:{{变量名}}
(props中的数据和data中的数据很类似,就相当于在data中创建了一个同名变量)
props中的数据可以直接使用

props中已经接受了的变量,attrs

image.png
this.$props指向vue实例的props
this.props指向data中的props

子传父

子组件通过父组件定义了的自定义事件,让父组件修改相关数据,以改变子组件信息

父组件中的子组件上定义一个自定义组件
image.png

在子组件中使用
this.$emit(‘davy’);调用emit事件,通过emit将信息发送给父组件

传参*
子组件中调用
参数1—-父子间中,使用子组件时定义的自定义事件的事件处理函数
参数2,3,4—-传递参数
this.$emit(‘davy’,’传参’)

image.png

  1. 子组件接受的父组件的值分为——引用类型和普通类型两种,
  2. 普通类型:字符串(String)、数字(Number)、布尔值(Boolean)、空(Null
  3. 引用类型:数组(Array)、对象(Object
  4. 其中,普通类型是可以在子组件中更改,
  5. 不会影响其他兄弟子组件内同样调用的来自父组件的值,
  6. 但是,引用类型的值,当在子组件中修改后,父组件的也会修改,
  7. 那么后果就是,其他同样引用了改值的子组件内部的值也会跟着被修改。
  8. 除非你有特殊的要求这么去做,否则最好不要这么做。
  9. 父组件传给子组件的值,在子组件中千万不能修改,因其数据是公用的,
  10. 改了所有引用的子组件就都改了。

兄弟之间的传递数据

通过兄弟的父级组件,改变另一个兄弟组件的变量

计算属性

对原有属性的加工
image.png
将计算属性写道computed中
image.png
使用计算属性代替表达式
image.png

监听器

记录值的变化

监听属性watch

监听上面的str2
参数1—变化后的值
参数2—变化前的值
image.png

组件的生命周期

要在父组件中查看一个子组件的生命周期函数生成的东西
要在子组件中写以下的8个生命周期函数(需要那个就用那个)
image.png
这样使用等
image.png
初始化后就能拿到数据了
image.png

接口的请求时机

接口的请求是异步的(请求的时间不确定),解决
1.默认值
2.loading
数据没有加载完就使用默认的数据(loading隐藏),加载完成后就使用loading中的数据(loading显示)
image.png
created(){}