有什么方法可以将按钮处理程序添加到组件,而无需在每次更新时都重新生成函数?

时间:2019-07-15 15:10:15

标签: reactjs react-hooks

我有一个简单的 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} />)

也许有些反应挂钩 会有所帮助,但我没有发现有用的东西。

0 个答案:

没有答案