Skip to content

Instantly share code, notes, and snippets.

@lomeat
Created February 14, 2024 11:06
Show Gist options
  • Save lomeat/fa49df2ae00b8a1981d9aa853ac6b25f to your computer and use it in GitHub Desktop.
Save lomeat/fa49df2ae00b8a1981d9aa853ac6b25f to your computer and use it in GitHub Desktop.
qweqwe
import React, { useEffect, useRef, useState } from "react";
import ReactDOM from "react-dom/client";
const rootElement = document.getElementById("root");
const root = ReactDOM.createRoot(rootElement);
function RerenderCounter() {
const rerenders = useRef(0);
useEffect(() => {
rerenders.current += 1;
});
return <div>Rerender: {rerenders.current}</div>;
}
function Counter(props) {
return <button onClick={props.onInc}>{props.value}</button>;
}
function Sidebar() {
const [value, setValue] = useState(0);
return (
<div style={{ border: "1px solid black", padding: 5 }}>
<strong>Sidebar</strong>
<RerenderCounter />
<Counter value={value} onInc={() => setValue(value + 1)} />
</div>
);
}
function Body() {
const [value, setValue] = useState(0);
return (
<div style={{ border: "1px solid black", padding: 5 }}>
<strong>Body</strong>
<RerenderCounter />
<Counter value={value} onInc={() => setValue(value + 1)} />
</div>
);
}
function App() {
return (
<div style={{ display: "flex", gap: 10 }}>
<Sidebar />
<Body />
</div>
);
}
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment