最近会陆续分享我在使用React的过程总结的一些比较高阶的使用方法,这些方法可以提升代码的可复用性,也让代码看起来更加简洁明晰。今天要讲的是Render Props,很多人可能都知道react的这个特性,但在实际项目中不知道如何用起来。刚好这两天的一个项目中用到了它,所以借机分享一下。
什么是Render Props
“render prop”是指一种在React组件之间使用值为函数的prop共享代码的技术
这个概念听上去有点拗口,我们拆开了看它。
-
首先它本质上是一个prop,是用来父子组件之间传递数据用的 -
其次这个prop传递的值是一个函数 -
最后它取名render props,是因为它通常是用来render(渲染)某个元素或组件
比如官网给出的示例:
<DataProvider render={data => (
<h1>Hello {data.target}</h1>
)}/>
我们给 这个子组件传递了一个叫 render 的prop,这个prop的值是一个函数,它返回了一个 h1 元素。然后我们可以假装实现一下这个 组件:
class DataProvider extends React.Component {
state = {
data: {
target: 'World'
}
}
render() {
return this.props.render(this.state)
}
}
最终我们的 DataProvider 组件渲染的结果就是 <h1>Hello World</h1>
。有同学可能会有疑问,为什么要费这么大周折?直接把 h1 元素写在 DataProvider 组件里不也可以吗?
这里就要讲到代码的可复用性了,