[Suggestion]: Code example for StopWatch in "Referencing Values with Refs"
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 55/100
- Tipo di issue
- Documentazione
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Ferma
- Stack tecnologico
- javascript, react
- Ambito
- documentation
Direzione di ricerca
Apri la pagina “Referencing Values with Refs” collegata nell’issue e rivedi l’esempio “StopWatch”. Confronta la gestione di now, startTime e secondsPassed con la separazione suggerita tra ref e state, quindi aggiorna l’esempio se appropriato. Il lavoro è completato quando il codice della pagina mostra chiaramente quali valori attivano i re-render e quali vengono memorizzati nei refs.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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>
</>
);
}
- Lingua principale
- JavaScript
- Stelle
- 11.8k
- Fork
- 7.9k
- Merge medio
- 16h 6m
- PR unite (30g)
- 7
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di reactjs/react.dev
-
type: documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
-
bug: unconfirmed
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
-
type: typos
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
bug: unconfirmed
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Tutte le issue di reactjs/react.dev
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
avniproject/avni-client#2135 ·
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
babalae/bettergi-scripts-list#3674 ·
-
A-Release-Notes C-Editing D-Modest S-Ready-For-Implementation
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
bevyengine/bevy-website#2595 ·
-
ecosystem wording
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
matrix-org/matrix.org#3649 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
vadimdemedes/ink#1029 ·