我有一个简单的 React Component ,我想将其转换为功能组件,但是该组件收到 id 作为道具,我需要为按钮创建处理程序,并将此 id 传递给它。但是,如果我在组件内部创建函数,则会导致重新生成,这是一种不好的做法。
我已经尝试过使用useCallback功能,但这只是备忘录,我认为下一个值是否会与上一个函数不同会重新生成。
// @flow
type Props = {|
id: string,
onClick: (id: string) => void,
|};
const Item = ({ id, onClick }: Props) => {
const handleClick = useCallback(() => {
onClick(id);
}, [id]);
return (
<Card onClick={handleClick}>
<CardContent />
</Card>
);
};
组件通过map
接收上部组件中的道具,例如:
items.map(item => <Item id={item.id} onClick={this.handleItemClick} />)
也许有些反应挂钩 会有所帮助,但我没有发现有用的东西。