从vue源码看props的用法

yizhihongxing

Vue源码到具体的组件使用,props的定义,传递和验证有哪些步骤?如何通过源码学习的方式,深入了解 Vue 的 props 系统?

Props 概述

在 Vue.js 中,父组件向子组件通信是通过 prop 进行的。prop 是子组件声明接受的外部参数,其在组件中通过 this.$props 访问。

Props 定义

在组件中,我们可以通过 props 属性来指定我们的组件需要哪些参数。定义方式有以下几种:

  1. 字符串数组
props: ['title', 'content']

上述方式等价于指定了两个 prop 属性:

props: {
  title: {},
  content: {}
}

之后在组件中就可以通过 this.titlethis.content 访问这两个属性。

  1. 对象格式
props: {
  propA: String,
  propB: [String, Number],
  propC: {
    type: String,
    default: 'default value',
    required: true,
    validator: function(value) {
      return value.length > 10;
    }
  }
}

其中,propA 的类型必须是字符串,propB 类型可以是字符串或数字,propC 是一个包含了类型(String)、默认值('default value')、必须性(必须存在)和验证器(value.length > 10)的选项对象。验证器必须是一个函数,其返回 true 时表示验证通过。

子组件访问 Props

访问 props 可以通过 this.$propsthis.xxx 方式来实现,xxx 是在 props 中定义的属性。

<template>
  <h1>{{ title }}</h1>
  <p>{{ content }}</p>
</template>

<script>
export default {
  props: ['title', 'content'],
  mounted() {
    console.log(this.$props); // { title: 'Hello World', content: 'This is a demo.' }
    console.log(this.title); // 'Hello World'
    console.log(this.content); // 'This is a demo.'
  }
};
</script>

Prop 验证

我们可以通过验证器函数、默认值或者类型验证来保证 prop 的正确性。

props: {
  propA: {
    type: Number,
    required: true,
    validator: function(value) {
      // 如果验证失败,返回 false,否则返回 true
      return value >= 0 && value <= 100;
    }
  },

  propB: {
    type: String,
    default: 'default value'
  },

  propC: {
    type: String,
    validator: function(value) {
      return ['success', 'warning', 'error'].indexOf(value) !== -1;
    }
  }
}

如上述代码,它指定了 propA 的类型必须为数字,propB 的默认值为 'default value',propC 的值必须在 ['success', 'warning', 'error'] 中出现。如果 prop 不满足类型校验、默认值或验证函数的校验时,则会出现警告。

示例一

下面是一个示例代码,展示了如何在组件中定义一个 prop 并在组件中访问它。

<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  props: {
    message: String
  }
}
</script>

示例二

下面是一个示例代码,展示了如何使用类型检查器设置具有默认值的 prop。

<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  props: {
    message: {
      type: String,
      default: 'Hello World'
    }
  }
}
</script>

总结

Vue.js 中,遵守一定的规范和规定,正常向子组件传递 prop 即可。在开发组件时,如果需要外部参数,务必遵守每个 prop 定义的约定和约束,确保组件的稳定性和可靠性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:从vue源码看props的用法 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • vue打包后生成一个配置文件可以修改IP

    要修改Vue打包后生成的IP地址,需要进行以下步骤: 找到Vue项目的根目录下的config文件夹,其中包含了打包的配置文件,比如’prod.env.js’和’index.js’。 在’prod.env.js’中添加以下代码:API_ROOT: ‘”http://your_server_ip_address/api”‘,其中your_server_ip_ad…

    Vue 2023年5月28日
    00
  • Vue防抖与节流的使用介绍

    我来为你详细讲解“Vue防抖与节流的使用介绍”的完整攻略,请仔细阅读以下内容: 什么是防抖和节流 在介绍防抖和节流之前,我们先来了解一下两个重要概念: 函数调用频率:函数被调用的次数。比如说,你在搜索框中输入关键字,搜索框会实时检索结果,此时,输入的操作就是函数,它被调用的频率就是你输入的频率。 函数执行时间:函数运行所需的时间。比如说,你在网页上点击一个按…

    Vue 2023年5月29日
    00
  • VUE3中h()函数和createVNode()函数的使用解读

    下面我将为你详细讲解“Vue3中h()函数和createVNode()函数的使用解读”的完整攻略。 1. h()函数和createVNode()函数的基本概念 在Vue 3中,h()函数和createVNode()函数被用来创建虚拟DOM。虚拟DOM是Vue进行数据渲染的重要原理之一,它是由JavaScript对象模拟的真实DOM,通过比较新旧虚拟DOM的差…

    Vue 2023年5月27日
    00
  • vue中使用localstorage来存储页面信息

    当使用Vue构建单页应用程序时,使用localStorage来存储页面信息是一种常见的做法。localStorage是一个API,可以将数据永久存储在浏览器中,即使用户关闭了浏览器,数据也不会丢失。以下是Vue中使用localStorage来存储页面信息的完整攻略,包含两条示例说明。 使用localStorage存储数据 要在Vue中使用localStora…

    Vue 2023年5月28日
    00
  • Vue的computed计算属性你了解吗

    Vue的computed计算属性在Vue框架开发中非常常用。它可以根据计算函数里的数据自动计算出结果,并且在数据发生变化时会自动重新计算,然后用于渲染模板。在这篇文章中,我们将深入了解Vue的computed计算属性,掌握计算属性的使用方法和技巧。 什么是Vue的computed计算属性 Vue的computed计算属性是在Vue实例中定义的函数。它返回一个…

    Vue 2023年5月28日
    00
  • vue 中几种传值方法(3种)

    当我们在 Vue 中需要进行组件间的数据传递时,就需要使用到一些传值方法。下面将从 props、emit 和 vuex 三个方面分别介绍 Vue 中三种传值方法。 1. props props 是 Vue 中组件间传值最常用的方法之一。它可以实现父组件向子组件传值,在子组件中可以直接使用 props 来访问。 1.1. 定义props 在父组件中定义 pro…

    Vue 2023年5月28日
    00
  • vue的状态更新方式(异步更新解决)

    首先我们来讲解一下vue的状态更新方式。 什么是Vue的状态更新方式 在Vue的运行过程中,当数据与页面发生交互时,Vue会重新渲染相应的视图,从而使用户界面得到更新。这种更新方式是自动的,也称为响应式更新,它是vue的核心特性之一。 为什么需要异步更新 但是,在某些情况下,我们需要手动更新数据,并且确保更新后的数据已经生效。在这种情况下,我们需要使用Vue…

    Vue 2023年5月29日
    00
  • Vue之监听方法案例详解

    那么接下来我来详细讲解“Vue之监听方法案例详解”的完整攻略,包含以下几个方面的内容: 什么是监听方法 在Vue中,监听方法指的是在Vue实例中,通过使用watch属性或$watch方法来监测某些值的变化。当监测到这些值发生变化时,可以执行一些指定的操作。 何时使用监听方法 在开发过程中,经常需要实时监测某些变量或属性的值的变化,来做出对应的响应。比如,当数…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部