Test name | Executions per second |
---|---|
ComponentWithOuterFunctionUseCallback | 1005868.0 Ops/sec |
ComponentWithUseCallback | 993201.9 Ops/sec |
<html>
<head>
<title>This is the title of the webpage!</title>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.2.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.2.0/umd/react-dom.production.min.js"></script>
<div id="root"></div>
</body>
</html>
const useHandler = (handler) => React.useRef(handler).current;
function useHandlerComponent() {
const testFunction = useHandler(evt => evt.preventDefault(), []);
return React.createElement('button', {
onClick: testFunction
}, 'Test click');
}
function UseCallbackComponent() {
const testFunction = React.useCallback(evt => evt.preventDefault(), []);
return React.createElement('button', {
onClick: testFunction
}, 'Test click');
}
ReactDOM.render(React.createElement(useHandlerComponent), document.getElementById('root'))
ReactDOM.render(React.createElement(UseCallbackComponent), document.getElementById('root'))