组件间通信-props

Props

功能

  让组件接收外部传过来的数据

传递数据

<Demo name="xxx"/>

接收数据

    1. 第一种方式(只接收):
props:['name']
    2. 第二种方式(限制类型):
props:{ name: String }
    3. 第三种方式(限制类型、限制必要性、指定默认值):
props:{
    name:{
        type:String, //类型
        required:true, //必要性
        default:'老王' //默认值
    }
}

备注

  (1). props是只读的,Vue底层会监测你对props的修改,如果进行了修改,就会发出警告,若业务需求确实需要修改,那么请复制props的内容到data中一份,然后去修改data中的数据。

  (2).不要使用v-model去绑定props中的数据

  (3).props传过来的若是引用类型的值,修改对象中的属性时Vue不会报错,但不推荐这样做。

props适用于

    ​ (1).父组件 ==> 子组件 通信
    即常规的使用方式
    ​ (2).子组件 ==> 父组件 通信(要求父先给子一个函数)

    如下代码:

    子组件通过调用传递的test1方法改变父组件中的数据

// 父组件
<template> <div id="app"> <h1>{{ n }}</h1> <HelloWorld :m="test1"/> </div> </template> <script> import HelloWorld from './components/HelloWorld.vue' export default { name: 'App', components: { HelloWorld }, data(){ return { n: 10 } }, methods:{ test1(n){ this.n = n return this.n } } } </script>
// 子组件
<template>
  <div>
    <h3>{{ m(100) }}</h3>
  </div>
</template>
<script>
export default {
  name: 'HelloWorld',
  props:{
    m: {
      type: Function,
      required: true,
      default: (a) => a
    }
  }
}
</script>

 

posted @ 2022-12-23 10:04  邢韬  阅读(55)  评论(0编辑  收藏  举报