[Suggestion]: How to avoid null checks when initializing useRef later
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- JavaScript
- Sterne
- 11.8k
- Forks
- 7.9k
- Ø Merge
- 1 T. 11 Std.
- Gemergte PRs (30 T.)
- 11
Beschreibung
Summary
The example is very bad.
Page
https://react.dev/reference/react/useRef#avoiding-recreating-the-ref-contents
Details
The solution how to avoid this pitfall doesn't seem very robust. If for any reason you wanted to instantiate to VideoPlayer but you want your ref to generally be of type VideoPlayer | null you will never be able to put a null in there.
A more robust way actually seems to leverage useState via:
const [playerRef] = useState(()=>({current:new VideoPlayer()}))
While investigating this issue i've concluded that people in general misunderstand what useRef is, going to the extremes of thinking it's "just for dom elements". playerRef in this snipper is exactly MutableRefObject<VideoPlayer> and this approach doesn't involve all kinds of acrobatics, like lying to a type checker, checks inside the render body etc.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Lies die useRef-Dokumentation im verlinkten Abschnitt „avoiding recreating the ref contents“ und überprüfe das aktuelle Beispiel sowie die darin angegebenen Typisierungsannahmen. Vergleiche den vorgeschlagenen useState-Ansatz mit den bestehenden Hinweisen und aktualisiere anschließend das Beispiel oder die Erklärung, sodass der vorgesehene Ref-Typ, das Verhalten bei null und die Abwägungen bei der Initialisierung klar sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, react
- Bereich
- documentation
- Issue-Typ
- Dokumentation
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100