vue3 render函数,vue中render函数用法

  vue3 render函数,vue中render函数用法

  本文主要介绍了在vue3的渲染函数中如何定义槽以及如何使用槽,有很好的参考价值。希望对你有帮助。如有错误或不足之处,请不吝赐教。

  

目录

  在渲染函数中定义槽,并使用槽来定义带有槽的组件。使用slot vue3 render函数稍微改变render函数的参数来签署VNode属性格式。

  

render函数里定义插槽和使用插槽

  vue3中this.slots和vue2的区别

  Vue3:this.slots是{[name:string]:(…args:any[])=array undefined }的对象,每个命名槽的内容都要被函数调用。例如,v-slots: foo slot分发的内容通过this.slots.foo()返回

  Vue2:this.slots是一个{[name: string]:Array},v-slots: foo的内容是通过this.slots.foo访问的,this.scopedSlots与this的作用相同。vue3中的$老虎机。

  

定义插槽

  这个。$老虎机。[ slot name]这是一个返回VNode数组的函数,用于访问静态插槽内容。

  const blog post=define component({

  render(){

  返回h(div ,[

  H (h1 ,这个。$ slots.header this。$ slots.header () 默认头槽),

  H (p ,这个。$ slots . default this . $ slots . default({ message:我是作用域槽的消息 }) 默认槽),

  H (H4 ,这个。$ slots.footer this。$ slots.footer () 默认页脚槽),

  ])

  }

  })

  //上面的代码等同于下面的模板

  模板

  差异

  氕

  Slot name=header 默认标头slot /slot

  /h1

  p

  插槽默认插槽/插槽

  /p

  h4

  Slot name=footer 默认页脚slot /slot

  /h4

  /div

  /模板

  

定义有插槽的组件使用插槽

  在h函数的第三个参数中,使用{[name:string]:(…args:any[])=array undefined }形式的对象来定义组件的特定槽内容。

  const BlogPostWrapper=define component({

  render(){

  返回h(div ),

  {style:背景:天蓝色 },

  h(

  博客帖子,

  空,

  {

  标题(道具){

  返回“我是头槽传入的内容”

  },

  默认(道具){

  //props这里是作用域槽的槽道具。

  返回“BlogPostWrapper:”props . message的默认槽的内容

  },

  页脚(道具){

  返回“我是传入的页脚位置的内容”

  }

  }

  )

  )

  }

  })

  //相当于模板

  模板

  差异

  博文

  Temp # header“我是传入的标头槽内容”/Tempalter

  tempalte #default=props

  {{BlogPostWrapper的默认槽内容: props.message}}

  /tempalte

  Temp # footer我是页脚槽/tempalter的内容

  /BlogPost

  /div

  /模板

  

vue3 render函数小变动

  渲染函数API?有没有觉得有点奇怪?恭喜您,此更改不会影响您作为模板用户的身份。

  老规矩,上帝视角看一下:

  h需要从整个世界导入(不再是渲染函数的参数)。渲染函数的参数已经改变(为了在通用组件和函数组件中保持一致)。VNodes有一个扁平的属性结构。

  

render函数的参数

  2.x 这么写

  在Vue 2.x版本中,render函数将自动接收H函数(又名:createElement)作为参数:

  导出默认值{

  渲染(h) {

  返回h( div );

  }

  }

  3.x 应该这么写

  在即将发布的3.x版本中,需要从全局角度手动引入H函数:

  从“vue”导入{ h };

  导出默认值{

  render() {

  返回h( div );

  }

  }

  

render函数签名

  2.x 这么写

  如上所述,2.x的render函数会自动接收h作为参数:

  导出默认值{

  渲染(h) {

  返回h( div );

  }

  }

  3.x 应该这么写

  在3.x版本中,render函数不再接收任何参数,它唯一剩下的主函数是在setup函数中使用它。这使得获取响应状态和作用域链中的各种函数变得容易,当然,还有传递给设置函数的任何参数。

  从“vue”导入{ h,reactive };

  导出默认值{

  设置(道具,{插槽,属性,发射}) {

  const state=reactive({ count:0 });

  函数增量(){

  状态.计数

  }

  //返回一个渲染函数

  return ()={

  h(

  div ,

  { onClick: increment,},

  state.count

  )

  }

  }

  }

  

VNode属性格式

  2.x 是这样的

  DomProps是VNode属性中的“嵌套列表”:

  {

  类别:[按钮,确认-按钮],

  样式:{ color:红色 },

  属性:{ id:确认 },

  domProps: { innerHTML: },

  打开:{ click: confirmCreate },

  按键:“提交按钮”,

  }

  3.x 中则是这样的

  在3.x版中,VNode的所有属性都已“扁平化”:

  {

  类别:[按钮,确认-按钮],

  样式:{ color:红色 },

  id:“提交”,

  innerHTML:“”,

  onClick: confirmCreate,

  按键:“提交按钮”,

  }

  其实我很少用渲染功能。毕竟模板挺香的。

  如果你想获得更详细的信息,请到这里:v3.vuejs.org/guide/migration/render-function-api.html(还没有中文版)

  以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: