[Suggestion]: Code example for StopWatch in "Referencing Values with Refs"
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 55/100
- Issue-Typ
- Dokumentation
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- javascript, react
- Bereich
- documentation
Rechercherichtung
Öffne die im Issue verlinkte Seite „Referencing Values with Refs“ und prüfe das Beispiel „StopWatch“. Vergleiche die Behandlung von now, startTime und secondsPassed mit der vorgeschlagenen ref/state-Aufteilung und aktualisiere das Beispiel, falls angemessen. Als abgeschlossen gilt die Aufgabe, wenn der Code der Seite klar zeigt, welche Werte Re-Renders auslösen und welche in refs gespeichert werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Summary
In the code sample of StopWatch, the DOM's re-rendering only depends on secondsPassed. now and startTime are just used for calculation. If they are treated as state, then very change on them will cause the re-rendering. Am I right?
Page
https://react.dev/learn/referencing-values-with-refs
Details
My suggestion is:
- define
nowandstartTimeasref - define
secondPassedasstate
import { useState, useRef } from "react";
export default function Stopwatch() {
const startTime = useRef(null);
const now = useRef(null);
const [secondPassed, setSecondPassed] = useState(0);
const intervalRef = useRef(null);
function handleStart() {
startTime.current = Date.now();
now.current = Date.now();
clearInterval(intervalRef.current);
intervalRef.current = setInterval(() => {
now.current = Date.now();
if (startTime != null && now != null) {
setSecondPassed((now.current - startTime.current) / 1000);
}
}, 10);
}
function handleStop() {
clearInterval(intervalRef.current);
}
return (
<>
<h1>Hi, Time passed: {secondPassed.toFixed(3)}</h1>
<button onClick={handleStart}>Start</button>
<button onClick={handleStop}>Stop</button>
</>
);
}
- Vorherrschende Sprache
- JavaScript
- Sterne
- 11.8k
- Forks
- 7.9k
- Ø Merge
- 16 Std. 6 Min.
- Gemergte PRs (30 T.)
- 7
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus reactjs/react.dev
-
type: documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 82/100
-
bug: unconfirmed
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
-
type: typos
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
-
bug: unconfirmed
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Alle Issues in reactjs/react.dev
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
avniproject/avni-client#2135 ·
-
automated broken-link
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
-
agent/security hive/hosted-available-lke648397-260827-5n31 security
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
babalae/bettergi-scripts-list#3674 ·
-
A-Release-Notes C-Editing D-Modest S-Ready-For-Implementation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
bevyengine/bevy-website#2595 ·