Generally callback could be memoed.
const A = memo(function A({ onClick }) {console.log("A");return (<button onClick={onClick} data-testid="button">click me</button>);});function App() {console.log("App");const [state, setState] = useState(0);return (<div><AonClick={() => {setState((state) => state + 1);}}/></div>);}const root = createRoot(document.getElementById("root"));root.render(<App />);setTimeout(() => {const button = document.querySelector('[data-testid="button"]');fireEvent.click(button);click the button}, 50);
const A = memo(function A({ onClick }) {console.log("A");return (<button onClick={onClick} data-testid="button">click me</button>);});function App() {console.log("App");const [state, setState] = useState(0);return (<div><AonClick={() => {setState((state) => state + 1);}}/></div>);}const root = createRoot(document.getElementById("root"));root.render(<App />);setTimeout(() => {const button = document.querySelector('[data-testid="button"]');fireEvent.click(button);click the button}, 50);
click on the console.log lines to input your answer.