vue3父子组件传值,props使用细节

setup函数的参数

它主要有两个参数:

  • 第一个参数:props :父组件传递过来的属性会被放到props对象中
  • 第二个参数:context:包含3个属性
  1. attrs:所有的非prop的attribute
  2. slots:父组件传递过来的插槽(这个在以渲染函数返回时会有作用,后面会讲到)
  3. emit:当我们组件内部需要发出事件时会用到emit

一、父组件要给子组件传值时,可以通过props来完成组件的通信

// 父组件




// 子组件


子组件中props两种常见的用法

  • 方式一:字符串数组,数组中的字符串就是父组件中引用子组件时自定义attribute的名称
  • 方式二:对象类型,我们可以在指定attribute名称的同时,指定它需要传递的类型,是否时必须的,默认值等

细节一:props中属性可以指定的类型

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

细节二:props中不同类型的写法

props: {
	// 基础类型指定
	propA: Number,
	// 指定多个类型
	propB: [String, Number],
	// 指定必传类型
	propC: {
		type: String,
		required: true
    },
    // 带有默认值的数字
    propD: {
		type: Number,
		default: 100
	},
	// 带有默认值的对象
	propE: {
		type: Object,
		// 对象或数组默认值必须从一个工厂函数获取
		default() {
			return { mes: 'lihua'}
		}
	},
	// 自定义验证函数
	propF: {
		validator(value) {
			return ['warning', 'success'].includes(value)
		}
	},
	// 具有默认值的函数
	prorG: {
		type: Function,
		default() {
			return 'default function'
		}
	}
}

细节三:Props的大小写命名
属性命名不推荐驼峰命名法法,需要用 a-b(短横线分隔命名)

二、子组件给父组件传值

父组件

//父组件


子组件

//子组件


你可能感兴趣的:(前端,html,面试,前端,javascript,vue.js)