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项目中使用vuex

    当我们的Vue应用逻辑越来越复杂,存在多个组件之间需要共享相同的状态时,我们就需要一个状态管理工具来进行数据的管理,这个时候Vuex就可以派上用场了。 以下是在Vue项目中使用Vuex的攻略: 什么是Vuex? Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态。 为什么我们要使用Vuex? 当我们的应用程序变…

    Vue 2023年5月28日
    00
  • Vue的模板语法以及实战案例

    关于 Vue 的模板语法以及实战案例的完整攻略,以下是具体的讲解: Vue 的模板语法 Vue 的模板语法采用了类似于 HTML 的语法,通过将模板中的标签和属性绑定到数据模型中实现了动态渲染页面的效果。具体来说,Vue 的模板语法主要包括以下几个方面: 支持的指令 v-if:条件语句,根据表达式的值选择是否渲染元素。 v-for:循环语句,用于渲染列表或集…

    Vue 2023年5月27日
    00
  • 详解使用vuex进行菜单管理

    对于“详解使用Vuex进行菜单管理”的完整攻略,以下是步骤和示例说明: 1. 确定Vuex的状态管理 在使用Vuex进行菜单管理之前,需要确定有哪些状态需要在Vuex中进行管理。在本教程中,我们需要管理的状态有: 菜单数据:用于渲染整个菜单。 当前菜单项:用于存储当前选择的菜单项,以便在页面中高亮显示。 打开的菜单项:用于存储当前展开的菜单项。 你可以在Vu…

    Vue 2023年5月27日
    00
  • React中Portals与错误边界处理实现

    当React应用程序遇到问题或出现错误时,错误边界(error boundaries)特别有用。错误边界是React组件,它会在渲染期间捕获并打印任何在树的子组件中抛出的JavaScript错误,并且,相当于错误被“停留”在边界内,防止应用程序崩溃。下面就让我们来详细讲解React中的错误边界处理以及Portals的使用。 错误边界(Error Bounda…

    Vue 2023年5月28日
    00
  • 在Vue项目中使用snapshot测试的具体使用

    在Vue项目中使用snapshot测试是一个非常好用的工具,可以有效测试组件的渲染结果,也方便我们方便我们查看代码变化和错误信息。以下是具体的使用攻略: 安装依赖 Vue项目中使用snapshot测试需要安装vue-test-utils和jest的相关依赖。可以使用npm或yarn进行安装。 npm install –save-dev @vue/test-…

    Vue 2023年5月27日
    00
  • 详解vue.js的devtools安装

    详解vue.js的devtools安装 简介 Vue.js Devtools 是一款专门针对 Vue.js 进行开发者调试的浏览器插件,可以用于检查 Vue 组件层次结构、所有的活动组件、组件的数据、组件事件等,Vue.js Devtools 安装之后,可以大大提高我们的代码调试效率。 安装步骤 步骤一:Chrome 网上应用商店下载 在 Chrome 应用…

    Vue 2023年5月27日
    00
  • Vue.js使用axios动态获取response里的data数据操作

    使用Vue.js配合axios获取response中的data数据的步骤如下: 安装axios npm install axios 在Vue.js中引入axios import axios from ‘axios’ 使用axios发送请求并在promise中获取数据 axios.get(‘/api/user/1’).then(response => {…

    Vue 2023年5月28日
    00
  • vue.js中created方法作用

    Vue.js 中的 created() 方法是 Vue 实例生命周期钩子函数之一,用于在 Vue 实例创建并构建完毕后被触发执行。接下来,我将详细介绍 created() 方法的作用和用法。 created() 方法的作用 在 Vue.js 应用中使用 created() 方法通常有以下一些作用: 初始化一些数据,包括组件中的变量,是最常用的 created…

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