官方文档:Render Props
渲染属性(Render Props)指一种在 React 组件之间使用一个值为函数的 props
在 React 组件间共享代码的简单技术。
本质上只是将一个方法作为 props
传递给子组件,而一般会给子组件传递的内容都是传递的值,例如:Object、Array、String、Number、Boolean 等。而有些情况下,可能需要在组件间传递 共用方法 来实现代码的复用,不过这种情况下传递的就是一个 纯粹的方法,比如父组件传递一个 function
给子组件,然后子组件去触发,实现代码的复用或事件的冒泡。
而 Render Props 则是传递一个 渲染逻辑 给子组件,带有 Render Props 的组件,并不是自己的实现的渲染逻辑,而是通过 props
传递实现的渲染逻辑,而这个渲染逻辑是由 render props 方法完成的。
使用方法:
<DataProvider render={(data) => <h1>Hello {data.target}</h1>} />
代码示例:
这里需要明确的概念是,<Mouse>
组件实际上是调用了它的 props.render
方法来将它的 state
暴露给 <App>
组件。因此,<App>
可以随便按自己的想法使用这个 state
。
该技术规避了所有 mixin
和 HOC 会面对的问题:
state
或者 props
来自哪里。我们可以看到通过 Render Props 的参数列表看到有哪些 state
或者 props
可供使用。