diff --git a/src/components/page-react-timings/App.tsx b/src/components/page-react-timings/App.tsx
index 11e745c..717710f 100644
--- a/src/components/page-react-timings/App.tsx
+++ b/src/components/page-react-timings/App.tsx
@@ -3,6 +3,7 @@ import * as React from "react";
import { LifeCycleTimings } from "./LifeCycleTimings";
import { Render } from "./Render";
import { Event } from "./Event";
+import { Rerender } from "./Rerender";
export function App() {
return (
@@ -15,6 +16,9 @@ export function App() {
Test event capture / event bubble
+
+ Test re-renders
+
>
);
}
diff --git a/src/components/page-react-timings/Rerender.tsx b/src/components/page-react-timings/Rerender.tsx
new file mode 100644
index 0000000..18f8b0c
--- /dev/null
+++ b/src/components/page-react-timings/Rerender.tsx
@@ -0,0 +1,47 @@
+import * as React from "react";
+
+export function Rerender() {
+ return (
+ <>
+
+
+
+ >
+ );
+}
+
+function DisplayHideButton({
+ label,
+ children,
+}: {
+ label: string;
+ children?: React.ReactNode;
+}) {
+ const [isDisplayed, setIsDisplayed] = React.useState(false);
+
+ return (
+ <>
+
+ {isDisplayed && children}
+ >
+ );
+}
+
+function RerenderInUseEffect() {
+ const [, forceUpdate] = React.useState({});
+
+ console.log("render");
+
+ React.useEffect(() => {
+ console.log("mount that has a re-render");
+ forceUpdate({});
+ }, []);
+
+ React.useEffect(() => {
+ console.log("effect with no side effects");
+ });
+
+ return "✅";
+}
--
2.51.2
From 3303528a6226ad62002413934336313c40f36312 Mon Sep 17 00:00:00 2001
From: Ayc0
Date: Wed, 22 May 2024 13:20:55 +0200
Subject: [PATCH 2/5] [timing] measure re-renders
---
.../page-react-timings/Rerender.tsx | 81 ++++++++++++++++++-
1 file changed, 80 insertions(+), 1 deletion(-)
diff --git a/src/components/page-react-timings/Rerender.tsx b/src/components/page-react-timings/Rerender.tsx
index 18f8b0c..b92833d 100644
--- a/src/components/page-react-timings/Rerender.tsx
+++ b/src/components/page-react-timings/Rerender.tsx
@@ -1,4 +1,5 @@
import * as React from "react";
+import { animationFrame, log, microTask, task } from "./tasks";
export function Rerender() {
return (
@@ -6,6 +7,11 @@ export function Rerender() {
+
+
+
+
+
>
);
}
@@ -13,15 +19,20 @@ export function Rerender() {
function DisplayHideButton({
label,
children,
+ style,
}: {
label: string;
children?: React.ReactNode;
+ style?: React.CSSProperties;
}) {
const [isDisplayed, setIsDisplayed] = React.useState(false);
return (
<>
-