Skip to content

Instantly share code, notes, and snippets.

@Eliav2
Created May 3, 2021 16:36
Show Gist options
  • Save Eliav2/b2ffe85b9d76429033fabc0fbae32796 to your computer and use it in GitHub Desktop.
Save Eliav2/b2ffe85b9d76429033fabc0fbae32796 to your computer and use it in GitHub Desktop.
const CombinedCycle = () => {
const log = useLog("CombinedCycle");
const [, setState] = useState({});
const forceUpdate = () => setState({});
const updateCalls = useRef(0);
const renderCalls = useRef(0);
const HandleClick = () => {
updateCalls.current = 0;
renderCalls.current = 0;
forceUpdate();
};
updateCalls.current += 1;
if (updateCalls.current < 5) forceUpdate();
useEffect(() => {
renderCalls.current += 1;
if (renderCalls.current < 3) forceUpdate();
updateCalls.current = 0;
log("render");
});
log("update");
return (
<div style={boxStyle} onClick={HandleClick}>
click
</div>
);
};
/**
* update {call:1,render:0}(CombinedCycle) 0.085ms
* update {call:2,render:0}(CombinedCycle) 0.17ms
* update {call:3,render:0}(CombinedCycle) 0.03ms
* update {call:4,render:0}(CombinedCycle) 0.025ms
* update {call:5,render:0}(CombinedCycle) 0.03ms
* render {call:5,render:1}(CombinedCycle) 0.29ms
* update {call:6,render:1}(CombinedCycle) 0.03ms
* update {call:7,render:1}(CombinedCycle) 0.095ms
* update {call:8,render:1}(CombinedCycle) 0.02ms
* update {call:9,render:1}(CombinedCycle) 0.04ms
* update {call:10,render:1}(CombinedCycle) 0.025ms
* render {call:10,render:2}(CombinedCycle) 0.08ms
* update {call:11,render:2}(CombinedCycle) 0.055ms
* update {call:12,render:2}(CombinedCycle) 0.085ms
* update {call:13,render:2}(CombinedCycle) 0.025ms
* update {call:14,render:2}(CombinedCycle) 0.03ms
* update {call:15,render:2}(CombinedCycle) 0.03ms
* render {call:15,render:3}(CombinedCycle) 0.085ms
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment