Render Props 里怎么传递多个参数?
我在用 Render Props 模式复用逻辑,但发现只能传一个 children 函数,想同时传数据和回调函数咋办?试过 {(data) => ...} 只能拿到一个参数。
比如下面这个例子,我想在 render props 里同时暴露 count 和 setCount,但不知道语法该怎么写:
const Counter = ({ render }) => {
const [count, setCount] = useState(0);
return render(count); // 这里只能传一个值
};
// 使用时
<Counter render={(count) => <div>{count}</div>} />
先检查一下你的 render 函数调用,其实可以直接传多个参数进去。你只需要在 render 函数里把需要的参数都列出来:
然后在使用的时候,记得解构接收这些参数:
这样就能同时拿到 count 和 setCount 了。说实话 Render Props 这种写法一开始确实让人有点懵,不过习惯了就好。要是觉得太麻烦,也可以考虑用 hook 来实现类似的功能,代码会更简洁些。