自定义组件

自定义组件之间不能写数据
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(){}