Vue中props的使用详解

yizhihongxing

Vue中props的使用详解

什么是props

在Vue中,每个组件都可以接受一些参数,这些参数被称为props。props是一个数组,在组件定义中声明。你可以使用props从父组件中传递数据到子组件中。

如何使用props

在组件定义中声明props属性,用于接收父组件中传递的数据。在组件使用中,使用v-bind指令将需要传递给子组件的数据,绑定到组件的对应props属性中。

<!-- 父组件模板 -->
<template>
  <div>
    <child-component :msg="message"></child-component>
  </div>
</template>

<script>
import childComponent from './childComponent.vue'

export default {
  components: {
    childComponent
  },
  data() {
    return {
      message: 'Hello World'
    }
  }
}
</script>
<!-- 子组件模板 -->
<template>
  <div>
    <h1>{{ msg }}</h1>
  </div>
</template>

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

上面的代码中,父组件通过v-bind指令将message数据绑定到子组件的msg属性中。在子组件中,通过props属性声明了需要接受一个字符串类型的msg属性。

props的类型声明和默认值

props在声明时,可以指定props的类型及默认值。对于props类型的声明,Vue提供了一系列内置的类型选项:

  • String
  • Number
  • Boolean
  • Array
  • Object
  • Date
  • Function
  • Symbol

如果需要声明props的默认值,只需要在props属性中添加一个default属性。

<!-- 子组件模板 -->
<template>
  <div>
    <h1>{{ msg }}</h1>
    <h2>{{ count }}</h2>
    <h3>{{ isEnabled }}</h3>
  </div>
</template>

<script>
export default {
  props: {
    msg: String,
    count: {
      type: Number,
      default: 1
    },
    isEnabled: {
      type: Boolean,
      default: true
    }
  }
}
</script>

在上面的代码中,msg的类型为String,count的类型为Number,defaultValue为1,isEnabled的类型为Boolean,defaultValue为true。

props的验证

Vue还提供了一种验证props的方式,使用validator属性可以自定义props的验证规则。

<!-- 子组件模板 -->
<template>
  <div>
    <h1>{{ msg }}</h1>
  </div>
</template>

<script>
export default {
  props: {
    msg: {
      type: String,
      validator: function(value) {
        return value.length >= 3
      }
    }
  }
}
</script>

在上面的代码中,msg的类型为字符串类型,并且需要满足长度大于等于3的验证规则。

示例1:父组件向子组件传递对象类型的props

<!-- 父组件模板 -->
<template>
  <div>
    <child-component :user="userInfo"></child-component>
  </div>
</template>

<script>
import childComponent from './childComponent.vue'

export default {
  components: {
    childComponent
  },
  data() {
    return {
      userInfo: {
        name: 'Jack',
        age: 18,
        gender: 'male'
      }
    }
  }
}
</script>
<!-- 子组件模板 -->
<template>
  <div>
    <h1>{{ user.name }}</h1>
    <h2>{{ user.age }}</h2>
    <h3>{{ user.gender }}</h3>
  </div>
</template>

<script>
export default {
  props: {
    user: Object
  }
}
</script>

在上面的代码中,父组件通过v-bind指令将userInfo数据绑定到子组件的user属性中。在子组件中,通过props属性声明了需要接受一个对象类型的user属性。

示例2:父组件向子组件传递函数类型的props

<!-- 父组件模板 -->
<template>
  <div>
    <child-component :handler="handleClick"></child-component>
  </div>
</template>

<script>
import childComponent from './childComponent.vue'

export default {
  components: {
    childComponent
  },
  methods: {
    handleClick() {
      alert('Hello World!')
    }
  }
}
</script>
<!-- 子组件模板 -->
<template>
  <div>
    <button @click="handleClick">Click me!</button>
  </div>
</template>

<script>
export default {
  props: {
    handler: Function
  },
  methods: {
    handleClick() {
      this.handler()
    }
  }
}
</script>

在上面的代码中,父组件通过v-bind指令将handleClick方法绑定到子组件的handler属性中。在子组件中,通过props属性声明了需要接受一个函数类型的handler属性,并且在子组件内部使用该属性来触发父组件的方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue中props的使用详解 - Python技术站

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

相关文章

  • vue中使用protobuf的过程记录

    下面是使用protobuf在vue中进行数据序列化和反序列化的完整攻略。 1. 安装protobuf 首先,需要在项目中安装protobuf。可以使用npm进行安装: npm install –save protobufjs 2. 编写protobuf文件 在项目根目录下创建一个文件夹,名称为protos,用于存放所有的protobuf文件。我们以一个简单…

    Vue 2023年5月28日
    00
  • vue 实现 tomato timer(蕃茄钟)实例讲解

    下面是详细讲解 “vue 实现 tomato timer(蕃茄钟)实例讲解”的完整攻略。 一、项目介绍 蕃茄钟是一种时间管理方法,采用对数目进行计数的方式来提高工作效率。本项目中我们将使用 Vue 来实现一个基础版的蕃茄钟。 二、项目结构 ├── App.vue ├── main.js ├── components │ ├── Timer.vue │ └──…

    Vue 2023年5月27日
    00
  • 梳理一下vue中的生命周期

    梳理Vue中的生命周期是了解Vue的重要组成部分之一,它可以帮助我们更好地理解Vue的工作原理以及响应式数据的流程。Vue的生命周期可以分为四个阶段: 创建阶段(Creation) 在创建阶段中,Vue组件实例会执行以下生命周期钩子函数: beforeCreate: 在实例创建之前,常用于初始化一些非响应式的数据。 created: 在实例创建之后,常用于获…

    Vue 2023年5月27日
    00
  • 微信小程序自定义toast组件的方法详解【含动画】

    我来为你详细讲解“微信小程序自定义toast组件的方法详解【含动画】”的攻略。 什么是Toast组件 Toast组件是一种提示框,通常用于向用户展示一些简短的信息或提示。在微信小程序中,Toast组件比较常见,通过它可以向用户提示请求数据的进度,或者一些操作的结果信息。 开始制作自定义Toast组件 1. 创建承载Toast的组件 在 WeUI 中,Toas…

    Vue 2023年5月27日
    00
  • cdn模式下vue的基本用法详解

    CDN模式下Vue的基本用法详解 本文将会详细介绍如何在CDN模式下使用Vue.js,并且通过两个示例说明其基本用法。 什么是CDN模式 CDN即Content Delivery Network,翻译为内容分发网络。在Web开发中,我们往往需要引用第三方库,例如jQuery、Vue等。CDN模式是指我们将这些库放在一个分布式的服务器群集中,用户在访问我们的网…

    Vue 2023年5月27日
    00
  • Element-ui DatePicker显示周数的方法示例

    请注意,下面的回答将分为以下几个部分: 需求分析 DatePicker组件详解 展示周数的原理 实现步骤 示例说明 1. 需求分析 现在有这样的需求:希望在Element-ui的DatePicker组件中,能够展示出日期对应的周数。 2. DatePicker组件详解 在Element-ui中,DatePicker是日期选择器,可以根据用户的选择返回一个Da…

    Vue 2023年5月29日
    00
  • Vue组件生命周期三个阶段全面总结讲解

    Vue组件生命周期三个阶段全面总结讲解 Vue组件生命周期分为三个阶段,分别为创建(Creation)、更新(Update)和销毁(Deletion)。对于一个Vue组件而言,当组件被创建后,Vue会自动执行一系列的生命周期函数,这些函数将会对组件进行一些操作,让组件可以正确地渲染出来,并完成组件的销毁。在接下来的内容中,我们将详细讲解这三个阶段以及每个阶段…

    Vue 2023年5月27日
    00
  • element日历calendar组件上月、今天、下月、日历块点击事件及模板源码

    下面是详细讲解 “element 日历 calendar 组件上月、今天、下月、日历块点击事件及模板源码”的完整攻略。 1. 功能说明 element 日历 calendar 组件是一款强大的日期选择组件,常用于项目中的日期选择、预约等场景。在本篇攻略中,将详细讲解其上月、今天、下月、日历块点击事件及模板源码等内容。 上月、下月按钮点击事件:点击上月、下月后…

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