首页 > 其他 > 详细

Vue插槽 VS React render Props、children props

时间:2020-05-28 18:33:43      阅读:77      评论:0      收藏:0      [点我收藏+]

vue 的 slot 回顾

插槽基本用法:

例子:组件 base-layout 提供3个插槽(header、默认、footer):

技术分享图片

使用组件 base-layout 的地方,自定义插槽的内容:

技术分享图片    技术分享图片

 

插槽传递属性(插槽内容能够访问子组件中才有的数据)

默认插槽传递属性, current-user 组件提供默认插槽,并且将user对象传递给父组件:

技术分享图片

使用 current-user 组件的地方:

技术分享图片    技术分享图片     

技术分享图片

 

具名插槽传递属性

技术分享图片

 

插槽解构:

1. 基本用法:

技术分享图片

2. 将 user 重命名为 person:

 技术分享图片

3. 定义默认内容,用于插槽 prop 是 undefined 的情形:

技术分享图片

 

 动态插槽:

技术分享图片

也可以这样写:

技术分享图片

 

具名插槽缩写:

 技术分享图片 技术分享图片

 

 

react 有vue插槽功能的用法:

1. 函数作为子元素,传递给子组件,props.children 可以传递任意类型的数据:

下面例子中,index 就是子组件传递给父组件的数据,父组件决定显示在组件某一处显示什么, 和vue的slot不一样的是 他是函数返回显示,slot直接是标签或者组件了

技术分享图片

 

 2. render props  使用场景就是有一个组件,它有一种状态(state),这种状态可以使用在不同的组件上,别的组件并不关心该状态是如何变更的,就可以使用render props; 

总的来说就是组件封装了状态相关的逻辑,接收一个render函数,调用的地方通过render函数返回动态的组件,返回的组件插入到某个地方;

具体例子:

个性组件:

技术分享图片

公共组件:

技术分享图片

如何使用:

技术分享图片

其他说明:

    • 上面其实也可以使用children prop(意思就是render 属性变为 children ,原理一样),
    • 不过children prop 并不真正需要添加到 JSX 元素的 “attributes” 列表中,可以直接放置到元素的内部

技术分享图片

 

Vue插槽 VS React render Props、children props

原文:https://www.cnblogs.com/vs1435/p/12981633.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!