[Suggestion]: How to avoid null checks when initializing useRef later
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- JavaScript
- Estrellas
- 11.8k
- Forks
- 7.9k
- Merge medio
- 1 d 11 h
- PR fusionados (30 d)
- 11
Descripción
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.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Lee la documentación de useRef en la sección enlazada “avoiding recreating the ref contents” y revisa el ejemplo actual y sus supuestos de tipado indicados. Compara el enfoque propuesto con useState con las indicaciones existentes y, después, actualiza el ejemplo o la explicación para que queden claros el tipo de ref previsto, el comportamiento de null y las ventajas y desventajas de la inicialización.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, react
- Área
- documentation
- Tipo de issue
- Documentación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100