Hooks Parte 3— useState

¿Qué hay detrás de lo legendario Hooks? De vez en cuando, me pregunto.

Desde la Parte 1 , pasamos por Elementla implementación para explicar el concepto de diseño general.

Una Elementclase contenedora gestiona la inicialización, actualización y desmontaje de Component.

A partir de la Parte 2 , useEffectse examinan detalladamente todos los usos. En esta Parte 3, nos gustaría continuar y sumergirnos en useState.

function Component() {
  const [value, setValue] = useState(initialValue);
  ...
  return (<div />)
}

Valor

Lo valueproporcionado se puede utilizar directamente en la Componentdefinición. Y se puede enviar más a los componentes secundarios.

function Component() {
  const [value, setValue] = useState(initialValue)
  const onChange = e => {
    setValue(e.target.value)
  }
  return (
    <>
      value: {value}
      <input value={value} onChange={onChange} />
      <ChildComponent value={value} />
    </>
  )
}

const [value] = useState({ name, func, ...anything })

Reemplace el valor con setValue, utilícelo {} [] Object.assignpara asegurarse de que está reemplazando un objeto.

setValue(name)
// replace property name
setValue({ ...value, name })
// append to array
setValue([ ...values, { name })

Si es necesario resolver el valor antes de establecerlo, puede reemplazarlo con una función.

const reducer = prev => prev + 1
setValue(reducer)

Una vez que se establece el nuevo valor, solicita la Elementactualización. En el próximo ciclo, ui reflejará este cambio.

—

Para aclarar el diseño anterior, a continuación se muestra el código fuente de useState.

constructor(initialValue) {
  this.updater = this.updater.bind(this)
  // for initial function value, resolve it
  if(typeof initialValue === 'function') {
    initialValue = initialValue()
  }
  this.makeArgs(initialValue)
}
update() {
 return this.args
}
updater(value) {
  // for function value, resolve the value
  if (typeof value === "function") {
    const updaterFn = value
    const [previousValue] = this.args
    value = updaterFn(previousValue)
  }
  this.makeArgs(value)
  // request element update
  this.el.update()
}
makeArgs(value) {
  // allocate value and setValue
  this.args = Object.freeze([value, this.updater])
}

useStateasigna un valor y permite que el valor se establezca de nuevo. También permite utilizar una función al establecer el valor.

Índice

  • Parte 1, Elemento
  • Parte 2, use Effect
  • Parte 3, useState <- USTED ESTÁ AQUÍ
  • Parte 4, renderizar

Suggested posts

Evitar las consecuencias devastadoras de un derrame cerebral: aprender del viaje de una familia.

Evitar las consecuencias devastadoras de un derrame cerebral: aprender del viaje de una familia.

Introducción Un accidente cerebrovascular es una emergencia médica que puede afectar a cualquier persona en cualquier momento. Ocurre cuando se interrumpe el flujo de sangre a una parte del cerebro, lo que lleva a una pérdida repentina de la función cerebral.

Jest: un poderoso marco de prueba de JavaScript

Jest: un poderoso marco de prueba de JavaScript

Las pruebas son una parte esencial del desarrollo de software. Garantiza que el código sea confiable, funcione como se espera y reduce la probabilidad de errores.

Related posts

Ese Archivo de Amenazas: Vol 7 Black Basta

Ese Archivo de Amenazas: Vol 7 Black Basta

En el mundo interconectado de hoy, la amenaza de los ataques cibernéticos es más frecuente que nunca. Los ciberdelincuentes y los actores del estado-nación buscan constantemente explotar las vulnerabilidades y robar datos valiosos, lo que representa un riesgo significativo para las organizaciones de todos los tamaños.

Recopilación de OSINT para la caza de amenazas

Recopilación de OSINT para la caza de amenazas

¡Hola, entusiastas cibernéticos! Bienvenido de nuevo a la serie OSINT para la caza de amenazas. En el primer artículo, le di una descripción general de OSINT y su importancia en la caza de amenazas.

El asesinato de Jordan Neely y el problema del racismo “patriótico”

¿Puede Estados Unidos dar el paso esencial de no equiparar el comportamiento racista con ser un buen estadounidense?

El asesinato de Jordan Neely y el problema del racismo “patriótico”

[Alerta de activación: este ensayo incluye capturas de pantalla de personas que elogiaron al asesino de Jordan Neely.] Los funcionarios encargados de hacer cumplir la ley finalmente, y quizás a regañadientes, acusaron a Daniel Penny, el hombre que estranguló a Jordan Neely hasta que murió, por ese homicidio.

El desafío de lectura de Goodreads es tóxico

El desafío de lectura de Goodreads es tóxico

La picazón en mi mano se extendió mientras negociaba con el librero local por otro libro. Este libro, como el resto que compré recientemente, encontraría su trono en mi pila de 'To Be Read' (TBR); y sin embargo, lo compré.