【发布时间】:2019-07-26 20:03:25
【问题描述】:
在典型的基于类的 React 组件中,这就是我创建事件处理程序的方式:
class MyComponent extends Component {
handleClick = () => {
...
}
render() {
return <button onClick={this.handleClick}>Click Me</button>;
}
}
但是,当我使用基于钩子的函数范式时,我发现自己有两个选择:
const MyComponent = () => {
const [handleClick] = useState(() => () => {
...
});
return <button onClick={handleClick}>Click Me</button>;
};
或者:
const MyComponent = () => {
const handleClick = useRef(() => {
...
});
return <button onClick={handleClick.current}>Click Me</button>;
};
客观上哪个更好,原因是什么?有没有我还没有听说过或发现的另一种(更好的)方法?
感谢您的帮助。
编辑:我放了一个例子here on CodeSandbox 显示这两种方法。正如您从那里的代码中看到的那样,似乎都没有在每次渲染时不必要地重新创建事件处理程序,因此我认为不可能存在性能问题。
【问题讨论】:
-
您不需要使用钩子或经典组件在组件内创建函数。您仍然可以在功能组件的主体内部或外部声明 const 函数。
标签: javascript reactjs jsx react-hooks