React 解决 “cross-cutting concerns” 问题

在React 官方文档中描述render prop 时,是为了解决横切关注问题“cross-cutting concerns”。“cross-cutting concerns”指的是两个非常不一样的组件存在一些类似的功能。对于“cross-cutting concerns” 问题,React 给出了三种解决方案来复用类似功能:

1)Minxs:解决部分method类似问题,但是已被弃用,ES6 的class 不支持该属性,只有在使用插件createReactClass时可使用,存在大量的负面影响,官方已不推荐使用。(https://reactjs.org/blog/2016/07/13/mixins-considered-harmful.html

2)HOC:高阶组件模式是React官方推荐用来取代Minxs解决“cross-cutting concerns” 问题的方案。将类似功能写在高阶组件内,差异化的功能各自封装在不同的基础组件。使用时根据需求,将基础组件作为参数传给高阶组件生成函数,返回该基础组件的高阶组件, 一般这个高阶组件会向基础组件中添加一些新的props。

3)Render Prop:这是一种模式,用来解决部分UI类似的问题。通过props传递一个返回React Element的函数给组件,组件在render时调用这个函数并将返回的React Element插入组件。这个功能与Vue的内容分发slot 功能一样。可以有多个,可以接受组件的参数。 一般在开发容器组件时,是非常需要的一个特性。例如开发一个资源位容器组件,资源位的数据获取都是公共逻辑,但是渲染时根据资源类型不一样,展示方式会不同,这时可以使用 render prop 定制自己的展示方式。Render Prop 模式可以直接使用children 属性作为prop,这时可以直接利用JSX的“Functions as Children” 特性,不使用显示的prop属性,直接将函数写在children中。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值