从vue源码看props的用法

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 webpack的基本使用示例教程

    Vue webpack的基本使用示例教程 简介 在Web应用程序中,Vue是一种常用的JavaScript框架。Webpack是一个常用的打包工具,它可以将应用程序中的各种组件打包到一个JavaScript文件中,方便部署。 本教程将介绍如何使用Vue和Webpack来构建Web应用程序。 安装Node.js 在使用Webpack之前,需要先安装Node.j…

    Vue 2023年5月28日
    00
  • 详解Vue之事件处理

    详解Vue之事件处理 Vue.js 是一款流行的前端框架,它的事件处理能力非常强大。本文将详细讲解 Vue.js 中的事件处理,包括如何使用 v-on 指令绑定事件、如何传递参数和修饰符、以及如何使用自定义事件等。 绑定事件 在 Vue.js 中,我们可以使用 v-on 指令来绑定事件。省略了 v-on 直接写 @ 符号,作用相同,下面的几个示例中直接使用 …

    Vue 2023年5月27日
    00
  • Vue项目部署后提示刷新版本的实现代码

    当我们部署 Vue 项目时,通常情况下,部署完成后用户需要手动刷新页面才能加载最新版本。为了提供更好的用户体验,我们可以使用一些方法来实现自动刷新页面的功能。以下是一些实现方法的示例说明。 方法一:添加版本号 第一种方法是通过添加版本号到静态资源文件来实现自动刷新页面。具体实现步骤如下: 在 Vue 项目中的 index.html 文件中添加版本号到静态资源…

    Vue 2023年5月28日
    00
  • springboot短信验证码登录功能的实现

    下面是“springboot短信验证码登录功能的实现”的完整攻略: 1. 准备工作 在开始实现短信验证码登录功能之前,需要确保以下几点: 已经有可以发送短信的短信接口。 在服务端生成并存储验证码,并在发送成功后将其返回给客户端。 在这里,我们假设已经有了可以发送短信的短信接口,并提供了 /api/sms/send 接口用于发送验证码,发送成功后返回以下JSO…

    Vue 2023年5月28日
    00
  • 详解Vue 中 extend 、component 、mixins 、extends 的区别

    让我详细讲解一下“详解Vue 中 extend 、component 、mixins 、extends 的区别”。 extend extend是Vue实例的一个方法,在使用时需要首先通过调用该方法来创建一个构造函数,然后通过该构造函数来创建Vue实例。 示例: // 创建一个名为MyComponent的构造函数 const MyComponent = Vue…

    Vue 2023年5月28日
    00
  • node实现socket链接与GPRS进行通信的方法

    要实现Node.js实现与GPRS进行通信的方法,需要考虑以下步骤: Node.js服务端:首先需要在Node.js服务端建立socket通信,用于接受来自GPRS设备的请求。可以使用Node.js的net模块来创建TCP连接。 数据格式:GPRS和Socket通信时,需要协商好数据的格式,因为Socket只支持字符串和Buffer两种数据类型。因此在通信前…

    Vue 2023年5月28日
    00
  • vue实现固定位置显示功能

    下面是详细讲解“Vue实现固定位置显示功能”的完整攻略: 1. 前言 在使用 Vue.js 开发页面时,常常会遇到需要固定某个节点位置的需求,常见的应用场景有如下几种: 在滚动页面时,需要固定某个顶部导航栏或侧边栏; 实现类似于弹出框的固定弹窗,钉在页面的某个位置,不受滚动页面的影响; 在轮播图等场景下,需要固定某个位置的图标按钮。 本篇攻略将会介绍主流的 …

    Vue 2023年5月29日
    00
  • VUE v-bind 数据绑定的示例详解

    以下是“VUE v-bind 数据绑定的示例详解”的完整攻略: 标题 VUE v-bind 数据绑定的示例详解 简介 v-bind是VUE.js中用于属性绑定的指令,它可以用来动态地绑定一个或多个属性到一个表达式。在本文中,我们将详细演示v-bind的使用方法,并提供两个实例来说明它的用法。 正文 基本用法 首先,我们来介绍v-bind的基本用法。例如,我们…

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