父向子传参(父组件 在子组件身上 自定义属性, 子组件使用defineprops接收)
//父组件 background、small、disabled、total 均为自定义属性
<Pagination
:background="true"
:small="true"
:disabled="false"
:total="total" />
//子组件
import { defineProps } from 'vue' // 引入defineProps
// 定义接收数据的类型type、是否必填required 还有个如果不填默认传值的字段default 这三个字段需要哪个写哪个
defineProps({
total: {
type: Number,
required: true
},
background: {
type: Boolean,
required: true
},
disabled: {
type: Boolean,
required: true
},
small: {
type: Boolean,
required: true
}
})
//在template中使用
<el-pagination
:small="small"
:disabled="disabled"
:background="background"
:total="total" />
子向父传参 (子组件通过defineEmits传递 父组件使用自定义事件接收)
//父组件的书写方式 @后面的getSizeVal和getCurVal是自定义事件 等于号后面的getSizeVal,getCurVal 是需要在父组件中接收传递过来参数的方法
<Pagination @getSizeVal="getSizeVal" @getCurVal="getCurVal"/>
const getSizeVal = (sizeVal: number) => {
//sizeVal 就是子组件传递过来的数据
limit.value = sizeVal
}
const getCurVal = (curVal: number) => {
//curVal 就是子组件传递过来的数据
page.value = curVal
}
//子组件的书写方式
import { defineEmits } from 'vue' //引入defineEmits
//将自定义事件传递给父组件getSizeVal、getCurVal
const emit = defineEmits(['getSizeVal', 'getCurVal'])
const handleSizeChange = (val: number) => {
//触发自定义事件 第一个参数是触发的哪个自定义事件 第二个参数是传递的值
emit('getSizeVal', val)
}
const handleCurrentChange = (val: number) => {
//触发自定义事件
emit('getCurVal', val)
}
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange" />