• Vue的prop属性


     

     

    在Vue中,父子组件的关系可以总结为propsDown,eventsUp。父组件通过props向下传递数据给子组件,子组件通过events给父组件发送消息。

    在这里插入图片描述

    • prop的作用就是父组件向子组件单向传递数据,该过程是单向的,传递的属性可以是静态的,也可以是动态的,可以是数字、字符串、数组、对象以及校验函数进行校验。

    • 所有的prop都使得其父子组件之间形成了一个单向下行绑定:父组件的prop的更新会向下流动到子组件中,但反过来不行,这样就会防止从子组件意外改变父组件以及同级子组件的状态,从而导致应用的数据流难以理解。

    • 每次父组件发生更新时,子组件中所有的prop都将刷新为最新的值,意味着不能在子组件内部改变prop,这样的话Vue会在控制台抛出一个警告。

    • 一般子组件想要操作prop中的值,需要将prop中的值赋值给本地定义的属性,且将prop作为初始值。

    • 当prop传入之后需要进行转换时,可以使用computed来进行定义。

    • 子组件用props接收父组件传来的消息由多种形式:

      • 数组形式 props:[data1,data2] 直接接收消息,不做任何校验,不建议使用

      • 简单对象形式 props:{ data1:String , data2: Array } 进行了类型校验,若类型不一致,控制台会报错。

      • 复杂对象形式

        • props: {
            data1: {
              type: String,
              required: true,
              default: 'default value',
              validator (value) {
                return (value.length < 5)
              }
            },
            data2: {
              type: Array,
              required: true,
              default: () => ['', '', '']
            }
          }
          
        • 复杂对象形式的情况下,作为对象属性的参数可以写为对象形式,参数对象含有4个属性,type、required、default、validator。

        • type:设定参数类型,当传入参数类型与type不相符时,控制台会报错

        • required:设定参数是否为必传,当设为true时,不传该参数会报错

        • default:设置默认值,当参数类型为复杂类型时,需要使用工厂模式生成默认值,否则vue会在控制台抛出警告。

        • validator:校验器,一个函数,拥有一个代表传入值的形参,可以自定义各种校验,当返回false时,会报错,表示校验未通过。

  • 相关阅读:
    聊一聊HTML <pre>标签
    [Effective JavaScript 笔记]第20条:使用call方法自定义接收者来调用方法
    数据库的权限管理
    完整性约束
    MYSQL
    Python并发编程之协程
    python并发编程之多线程
    python并发编程之多进程
    进程
    网络编程之socket的运用
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/16220734.html
Copyright © 2020-2023  润新知