vue3 的8种通信 方式
创始人
2024-05-01 03:03:13

目录

1.defineProps  defineEmits  defineExpose/ref

ts写法

defineEmit

defineExpose

2.v-model   组件标签可同时写多个v-model 不再支持  .sync

3.provide inject

4.attrs  会包含父组件的props 属性的集合  一旦用props接收,attrs

就接收不到了

5.插槽


基于vue 3.2

1.defineProps  defineEmits  defineExpose/ref




defineEmits

//father

//son


defineExpose  父组件需要借助ref



ts写法

defineProps 三种写法

 let props= defineProps(['str'])console.log(props);let props = defineProps({str:String,arr:{type:Object,default:()=>[1,2]}})let props = defineProps<{str:string,arr:number[]
}>()withDefaults(defineProps<{  //设置默认值str:string,arr:number[]
}>(),{arr:()=>[666]
})

defineEmit

let emit = defineEmits(['ca'])let emit = defineEmits<{  // 可以对每一个参数进行限制(e:'ca',a:string,b:number,c:string):void
}>()let changeArr = ()=>{emit('ca','999',88,'jjj')
}

defineExpose

defineExpose<{n:string,s:Function}>({n:'999',s:()=>console.log('999'),
})let wf = ref>();
onMounted(()=>{wf.value?.s();console.log(wf.value?.n);
})

2.v-model   组件标签可同时写多个v-model 不再支持  .sync



3.provide inject




4.attrs  会包含父组件的props 属性的集合  一旦用props接收,attrs

就接收不到了



5.插槽

vue2
匿名插槽
具名 模版标签 v-slot:xxx 或 #xxx
作用域  模版  slot-scope="{name}"
vue3 匿名 具名不变
作用域

  模版  v-slot="{name}" 或者  #default="{name}" 或者

 v-slot:default="slotProps"

动态插槽  

 import { ref } from 'vue';
let dyniamic = ref('dyniamic')
let dyniamicChange = ()=>{dyniamic.value = 'test'
}

具名插槽也可以 当作用域 用

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...