con devolución de llamada
const [state, setState] = useState(() => { email: '', password: '', }); const handleStateChange = useCallback((stateName) => (e) => { setState((prevState) => ({ ...prevState, [stateName]: e.target.value, })); }, []);Sin devolución de llamada
const [state, setState] = useState(() => { email: '', password: '', }); const handleStateChange = useCallback((stateName) => (e) => { setState({ ...state, [stateName]: e.target.value, }); }, [state]); Es posible usar el envío de useState sin agregar dependencias a través de la función de devolución de llamada.
Creo que reduce las dependencias, por lo que ayuda al rendimiento.
¿Es esto correcto?
Además, a veces, el argumento de devolución de llamada no obtiene el estado actual correctamente. No sé por qué no funciona.
Es probable que no haya una diferencia medible entre los dos enfoques (¡pero podría intentar probarlo!). Esta es una optimización temprana extrema, y si desea aumentar el rendimiento, debe concentrarse en otras partes de su aplicación que pueden generar mejores resultados.
La diferencia entre los dos enfoques es resolver problemas diferentes (obtener el prevState frente a no obtenerlo). Llama a la misma lógica internamente, y React debería ser lo suficientemente inteligente como para no crear una diferencia de rendimiento entre los dos.
Piénselo de esta manera: ¿le preocupa agregar uno o dos estados adicionales debido al rendimiento? No, por supuesto que no, porque no importa.