props的接收方式

1.简单数组方式

只能进行属性的接收而已,但是无法实现类型判断,默认值设置、是否必需以及自定义校验规则

props:["todos","deleteTodo","updataTodo"]

2.简单对象方式

据类型的简单判断,但是无法实现默认值设置、是否必需以及自定义校验规则

props:{
    // 如果传过来的数据不是数组,那么会报错
    todos:Array,
    deleteTodo:Function,
    updataTodo:Function
  }

3.复杂对象方式

对数据类型可以判断,确认是否必需,设置默认值,自定义校验规则

props:{
   todos:{
     type:Array,
     required:true, // 必须传入,不传会报错
     default(){
       // 如果没有传值就会使用默认值
       // ! 如果是基础数据类型,那么可以直接进行设值
       // ! 数组与对象类型的默认值,需要利用工厂函数进行设置
       return [{content: "我爱你", id: 1, isOver: false}]
     },

     // 自定义校验规则,对传过来的数据进行校验
     // validator:function(value){
     //   // value是传过来的数据
     //   // console.log(value)

     //   // custom validator check failed for prop "todos".如果不符合数据监测失败
     //   return value[0].isOver===true
     // }
   },
   // 也可以参杂简单对象模式
   deleteTodo:Function,
   updataTodo:Function
 }

全部代码

<template>
  <ul class="todo-main">
    <Item v-for="(todo, index) in todos" 
        :key="todo.id" 
        :todo="todo" 
        :index="index"
        :deleteTodo="deleteTodo"
        :updataTodo="updataTodo"
        />
  </ul>
</template>

<script>
import Item from "@/components/Item"
export default {
    name:"List",
    // props:属性接受的方式
    // 1.简单数组方式,只能进行属性的接收而已,但是无法实现类型判断,默认值设置、是否必需以及自定义校验规则
    // props:["todos","deleteTodo","updataTodo"],

    // 2.简单对象方式,对数据类型的简单判断,但是无法实现默认值设置、是否必需以及自定义校验规则
    // props:{
    //   // 如果传过来的数据不是数组,那么会报错
    //   todos:Array,
    //   deleteTodo:Function,
    //   updataTodo:Function
    // },

    // 3.复杂对象方式,对数据类型可以判断,确认是否必需,设置默认值,自定义校验规则
    props:{
      todos:{
        type:Array,
        required:true, // 必须传入,不传会报错
        default(){
          // 如果没有传值就会使用默认值
          // ! 如果是基础数据类型,那么可以直接进行设值
          // ! 数组与对象类型的默认值,需要利用工厂函数进行设置
          return [{content: "我爱你", id: 1, isOver: false}]
        },

        // 自定义校验规则,对传过来的数据进行校验
        // validator:function(value){
        //   // value是传过来的数据
        //   // console.log(value)

        //   // custom validator check failed for prop "todos".如果不符合数据监测失败
        //   return value[0].isOver===true
        // }
      },
      // 也可以参杂简单对象模式
      deleteTodo:Function,
      updataTodo:Function
    },

    components:{
        Item
    }
};
</script>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值