在 react 中,render props 是一种使用函数 prop 在组件之间共享逻辑的技术。不使用子项或组合,而是将函数作为 prop 传递以动态呈现内容。这种方法适用于功能组件和钩子。
以下是如何使用功能组件实现 render props 的示例:
import React, { useState } from 'react';
// The component using render props
const MouseTracker = ({ render }) => {
const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });
const handleMouseMove = (event) => {
setMousePosition({
x: event.clientX,
y: event.clientY,
});
};
return (
<div style="{{" height: onmousemove="{handleMouseMove}">
{render(mousePosition)}
</div>
);
};
// Component that consumes the render props
const App = () => {
return (
<div>
<h1>Mouse Tracker</h1>
<mousetracker render="{({" x y> (
<h2>Mouse Position: {x}, {y}</h2>
)}/>
</mousetracker>
</div>
);
};
export default App;
此模式可以更灵活地决定如何根据 mousetracker 组件内部的逻辑呈现内容。