assigning a function to a `useState` variable
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
I was toying with storing a function in a useState variable, like this:
const behavior = () => {
// set something up
return () => {
// tear it back down
}
}
// inside the component
const [cleanupFunction, setCleanupFunction] = useState(null)
useEffect(() => {
if (behavior){
const cleanup = behavior()
setCleanupFunction( () => cleanup )
} else {
cleanupFunction && cleanupFunction()
}
}, [behavior])
This pattern is great for when you want to set up and tear down behavior when a prop changes, rather than wait until unmount. You can imagine that different behaviors with their associated cleanups can be passed in.
I was initially tempted to say setCleanupFunction(cleaup), but this was not working - my function was being called without me explicitly calling it. This explanation on stackoverflow gives a crucial tidbit: when storing a callback as a useState variable, it must be stored as a callback function which returns the function you want to call. I feel this use case should be somewhere in the react docs in the hooks section.
Thank you for everything you do!
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
Comienza localizando la sección de la documentación de React Hooks relevante para useState y useEffect. Documenta el comportamiento mostrado en el issue: almacenar una función en el state requiere un callback updater que devuelva la función, y explica el caso de uso de setup y cleanup. Se considera completado cuando la guía se haya colocado en una página adecuada de Hooks y cubra claramente por qué pasar la función directamente la invoca.
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
- 45/100