Vue中props的使用详解

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 引用自定义ttf、otf、在线字体的方法

    下面是详细的 vue 引用自定义字体(包括ttf、otf、在线字体)的方法攻略说明: 1. 准备字体文件 首先需要准备好自定义字体文件,可以选择在本地寻找,也可以在网上搜索并下载。文件格式可以是ttf、otf等常见的字体文件格式。 2. 引用本地字体 2.1 在 CSS 中引用 首先需要将自定义字体文件放在项目的静态资源目录中,如 public 目录下的 f…

    Vue 2023年5月28日
    00
  • 尤大大新活petite-vue的实现

    首先,需要说明的是,Petite Vue是Vue的一个迷你版本,它依赖Vue 3,并且只有5KB的大小。它是为了在代码质量和性能之间找到一个理想的平衡点,以便开发者可以轻松编写高质量的代码并快速创建精美的交互效果。 Petite Vue使用与Vue 3相同的选项API,但是与Vue相比,它有一些不同之处,例如没有Virtual DOM和响应式系统的支持。在本…

    Vue 2023年5月28日
    00
  • vue中的双向数据绑定原理与常见操作技巧详解

    Vue中的双向数据绑定原理与常见操作技巧详解 1. 双向数据绑定原理 Vue中的双向数据绑定是通过 v-model 指令实现的。双向数据绑定本质上是一个语法糖,它实际上是将输入事件和属性绑定事件结合在一起,使得不仅仅当属性值改变时,视图也可以立刻改变,同时也可以通过视图改变属性值,从而实现双向数据绑定。 当我们使用 v-model 指令时,例如: <i…

    Vue 2023年5月27日
    00
  • 分享9个Vue的巧妙冷技巧

    下面是分享9个Vue的巧妙冷技巧的完整攻略: 分享9个Vue的巧妙冷技巧 1. 利用v-model双向绑定 v-model是Vue的一个指令,可以在表单元素上进行双向数据绑定。可以用v-model实现一个简单的计数器应用。 <template> <div> <button @click="increment"…

    Vue 2023年5月27日
    00
  • vue3.0 CLI – 1 – npm 安装与初始化的入门教程

    Vue3.0 CLI – 1 – npm 安装与初始化的入门教程 什么是 Vue CLI Vue CLI 是一个官方发布的 Vue.js 项目脚手架,提供了快速初始化项目、快速开发等功能,大大提高了前端开发效率。Vue CLI 内置了许多插件和功能,例如代码格式化、组件生成、调试等,同时也允许用户在创建项目时选择需要的插件和功能,定制自己的项目模版。 安装 …

    Vue 2023年5月28日
    00
  • Vue程序调试的方法

    下面是Vue程序调试的完整攻略,包含以下内容: 使用Chrome浏览器的开发者工具进行调试 使用Vue.js官方提供的调试工具Vue.js DevTools 在代码中使用console.log()进行调试 使用断点进行逐行调试 1. 使用Chrome浏览器的开发者工具进行调试 Chrome浏览器的开发者工具内置了强大的调试工具,可以方便地调试Vue程序。在使…

    Vue 2023年5月27日
    00
  • Vue自定义指令v-focus实例详解

    Vue自定义指令v-focus实例详解: 自定义指令是Vue中重要的一种拓展方式,可以用来封装常用的操作,比如事件绑定、样式切换等等。v-focus就是一个简单的自定义指令,用于在元素被插入到页面中时,自动获得焦点。 下面,我们来详细讲解如何创建v-focus指令。 创建v-focus指令 在Vue中注册一个全局指令很简单,只需调用Vue.directive…

    Vue 2023年5月29日
    00
  • Vue2.2.0+新特性整理及注意事项

    Vue2.2.0+新特性整理及注意事项 Vue.js是一个流行的JavaScript框架,它是一个数据驱动、构建用户界面的渐进式框架。Vue2.2.0是Vue.js的一个重要版本,引入了一些新特性以及注意事项。本文将详细讲解Vue2.2.0+新特性整理及注意事项。 新特性 新增v-model指令的修饰符 在Vue2.2.0中,v-model指令新增了修饰符 …

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