赞助
posts - 449,comments - 12,views - 11万

今天看vue3中文文档 看到函数式组件不太理解上面写的 然后自己写了一下才理解上面的自己记录一下

先在子组件里面写上

复制代码
<script>
// dynameic 组件
import { h } from "vue";

// Vue3 中函数式组件只能用函数式声明
const DynamicHeading = (props, context) => {
  console.log(context);
  return h(`h${props.level}`, context.attrs, context.slots);
};

DynamicHeading.props = ["level"];

export default DynamicHeading;
</script>
复制代码

 

 

父组件里面

复制代码
<template>
<dynamic-heading level="5">年后</dynamic-heading>
</template>
<script>
import dynamicHeading from './dynameic.vue'
export default {
  components:{
     dynamicHeading
  }
}
</script>
复制代码

 

 

浏览器上面效果

 

 我们传个1试试         

 

 但是我想自己创建一个div然后我这样试h函数第一个函数不就是标签嘛 那我写个div就完事了  看见第三个参数有个slots 这个应该是插槽我直接在插槽里面写东西就完事了

复制代码
<script>
// dynameic 组件
import { h } from "vue";

// Vue3 中函数式组件只能用函数式声明
const DynamicHeading = (props, context) => {
  console.log(context);
  context.slots = `你好${props.level}`
  return h(`div`, context.attrs, context.slots);
};

DynamicHeading.props = ["level"];
export default DynamicHeading;
</script>
//父组件代码
<template>
<dynamic-heading level="攻城师"></dynamic-heading>
</template>
<script>
import dynamicHeading from './dynameic.vue'
export default {
  components:{
     dynamicHeading
  }
}
</script>
复制代码

然后看浏览器效果

 

posted on   Tsunami黄嵩粟  阅读(3149)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏