Render Props
Render Props
简单案例
// mouse/index.jsx
import { useState } from "react";
// 鼠标指正的具体元素由传入的 render 函数负责渲染
// Mouse 组件只负责监听鼠标移动事件,并且根据传入的 render prop 将自定义鼠标元素渲染到指定位置
export default function Mouse({ render = undefined }) {
const [position, setPosition] = useState({ x: 0, y: 0 })
function handleMouseMove(e) {
setPosition({ x: e.clientX, y: e.clientY })
}
return (
<div onMouseMove={handleMouseMove} style={{ position: 'fixed', width: '100vw', height: '100vh' }}>
{render(position)}
</div>
)
}
传入的 prop 名称不一定必须是 'render'
Last updated