React.Componente

Esta página contiene una referencia de API detallada para la definición de clase de componente de React. Asume que está familiarizado con conceptos fundamentales de React, como Componentes y Accesorios, así como con el Estado y el Ciclo de vida. Si no lo estás, léelos primero.

Descripción general

React le permite definir componentes como clases o funciones. Los componentes definidos como clases actualmente proporcionan más características que se describen en detalle en esta página. Para definir una clase de componente de React, debe extender React.Component:

class Welcome extends React.Component { render() { return <h1>Hello, {this.props.name}</h1>; }}

El único método debe definir en un React.Component subclase se llama render(). Todos los demás métodos descritos en esta página son opcionales.

Recomendamos encarecidamente que no cree sus propias clases de componentes base. En los componentes de React, la reutilización de código se logra principalmente a través de la composición en lugar de la herencia.

Nota:

React no le obliga a usar la sintaxis de la clase ES6. Si prefiere evitarlo, puede usar el módulo create-react-class o una abstracción personalizada similar en su lugar. Echa un vistazo al uso de React sin ES6 para obtener más información.

El ciclo de vida del componente

Cada componente tiene varios «métodos de ciclo de vida» que puede anular para ejecutar código en momentos particulares del proceso. Puede usar este diagrama de ciclo de vida como hoja de trucos. En la siguiente lista, los métodos de ciclo de vida de uso común están marcados en negrita. El resto de ellos existen para casos de uso relativamente raros.

Montaje

Estos métodos son llamados en el orden siguiente cuando una instancia de un componente se crea y se inserta en la DOM:

  • constructor()
  • static getDerivedStateFromProps()
  • render()
  • componentDidMount()

Nota:

Estos métodos son considerados legado y usted debe evitar en código nuevo:

  • UNSAFE_componentWillMount()

Actualización

Una actualización puede ser causada por cambios de atrezzo o estado. Estos métodos son llamados en el orden siguiente cuando un componente se vuelve a presentar:

  • static getDerivedStateFromProps()
  • shouldComponentUpdate()
  • render()
  • getSnapshotBeforeUpdate()
  • componentDidUpdate()

Nota:

Estos métodos son considerados legado y usted debe evitar en el nuevo código:

  • UNSAFE_componentWillUpdate()
  • UNSAFE_componentWillReceiveProps()

Cerrar

Este método es llamado cuando un componente que está siendo retirado de la DOM:

  • componentWillUnmount()

Manejo de Errores

se llama a Estos métodos cuando hay un error durante la representación, en un ciclo de vida de método, o en el constructor de cualquier componente secundario.

  • static getDerivedStateFromError()
  • componentDidCatch()

Otras Api

Cada componente proporciona también algunas otras APIs:

  • setState()
  • forceUpdate()

Propiedades de la Clase

  • defaultProps
  • displayName

Propiedades de la Instancia

  • props
  • state

Referencia

Comúnmente Utilizado Métodos del ciclo de vida

Los métodos de esta sección cubren la gran mayoría de los casos de uso que usted encontrará la creación de Reaccionar componentes. Para obtener una referencia visual, consulte este diagrama de ciclo de vida.

render()

render()

El render() método es el único método requiere de un componente de clase.

Cuando se llama, debe examinar this.props y this.state y devolver uno de los siguientes tipos:

  • Elementos React. Normalmente se crea a través de JSX. Por ejemplo, <div /> y <MyComponent /> son elementos de React que le indican a React que renderice un nodo DOM u otro componente definido por el usuario, respectivamente.
  • Arrays y fragmentos. Permite devolver varios elementos desde el renderizado. Consulte la documentación sobre fragmentos para obtener más detalles.
  • Portales. Le permite renderizar a los niños en un subárbol DOM diferente. Consulte la documentación de los portales para obtener más detalles.
  • Cadena y números. Estos se representan como nodos de texto en el DOM.
  • Booleanos o null. No rendimos nada. (Existe principalmente para soportar el patrón return test && <Child />, donde test es booleano.)

La función render() debe ser pura, lo que significa que no modifica el estado del componente, devuelve el mismo resultado cada vez que se invoca y no interactúa directamente con el navegador.

Si necesita interactuar con el navegador, realice su trabajo en componentDidMount() o en los otros métodos de ciclo de vida en su lugar. Mantener render() puro hace que los componentes sean más fáciles de pensar.

Nota

render() no va a ser invocada si shouldComponentUpdate() devuelve false.

constructor()

constructor(props)

Si usted no inicializar el estado y no los métodos de enlace, usted no necesita implementar un constructor de su Reaccionan componente.

El constructor de un componente React se llama antes de montarlo. Al implementar el constructor para una subclase React.Component, debe llamar a super(props) antes de cualquier otra instrucción. De lo contrario, this.props no estará definido en el constructor, lo que puede generar errores.

Normalmente, en React los constructores solo se usan para dos propósitos:

  • Inicializar el estado local asignando un objeto a this.state.
  • Enlazar métodos de controlador de eventos a una instancia.

no debe llamar a setState() en el constructor(). En su lugar, si su componente necesita usar el estado local, asigne el estado inicial a this.state directamente en el constructor:

constructor(props) { super(props); // Don't call this.setState() here! this.state = { counter: 0 }; this.handleClick = this.handleClick.bind(this);}

Constructor es el único lugar donde debe asignar this.state directamente. En todos los demás métodos, debe usar this.setState() en su lugar.

Evite introducir efectos secundarios o suscripciones en el constructor. Para esos casos de uso, use componentDidMount() en su lugar.

Nota

¡Evite copiar accesorios a su estado! Este es un error común:

constructor(props) { super(props); // Don't do this! this.state = { color: props.color };}

El problema es que es innecesaria (puede usar this.props.color directamente en su lugar), y crea bugs (actualizaciones para el color prop no se refleja en el estado).

Solo use este patrón si desea ignorar intencionalmente las actualizaciones de prop. En ese caso, tiene sentido cambiar el nombre de la proposición a ser llamado initialColor o defaultColor. A continuación, puede forzar a un componente a» restablecer»su estado interno cambiando su key cuando sea necesario.

Lea nuestra publicación de blog sobre evitar el estado derivado para saber qué hacer si cree que necesita algún estado para depender de los accesorios.

componentDidMount()

componentDidMount()
componentDidMount() se invoca inmediatamente después de que un componente está montado (insertada en el árbol). La inicialización que requiere nodos DOM debe ir aquí. Si necesita cargar datos desde un punto de conexión remoto, este es un buen lugar para crear instancias de la solicitud de red.

Este método es un buen lugar para configurar cualquier suscripción. Si lo hace, no olvide cancelar la suscripción en componentWillUnmount().

Usted puede llamar a setState() inmediatamente en el componentDidMount(). Activará una representación adicional, pero ocurrirá antes de que el navegador actualice la pantalla. Esto garantiza que aunque render() se llamará dos veces en este caso, el usuario no verá el estado intermedio. Utilice este patrón con precaución, ya que a menudo causa problemas de rendimiento. En la mayoría de los casos, debería poder asignar el estado inicial en el constructor() en su lugar. Sin embargo, puede ser necesario para casos como modales y descripciones emergentes cuando se necesita medir un nodo DOM antes de renderizar algo que depende de su tamaño o posición.

componentDidUpdate()

componentDidUpdate(prevProps, prevState, snapshot)
componentDidUpdate() se invoca inmediatamente después de la actualización se produce. Este método no se llama para el renderizado inicial.

Use esto como una oportunidad para operar en el DOM cuando el componente se haya actualizado. Este también es un buen lugar para realizar solicitudes de red, siempre y cuando compare los accesorios actuales con los accesorios anteriores (p. ej. una solicitud de red puede no ser necesaria si los accesorios no han cambiado).

componentDidUpdate(prevProps) { // Typical usage (don't forget to compare props): if (this.props.userID !== prevProps.userID) { this.fetchData(this.props.userID); }}

Puede llamar a setState()inmediatamente en componentDidUpdate() pero tenga en cuenta que debe estar envuelto en una condición como en el ejemplo anterior, o causará un bucle infinito. También causaría una nueva representación adicional que, aunque no es visible para el usuario, puede afectar el rendimiento del componente. Si estás tratando de» reflejar » algún estado a un accesorio que viene de arriba, considera usar el accesorio directamente en su lugar. Lea más sobre por qué copiar accesorios en el estado causa errores.

Si su componente implementa el ciclo de vida getSnapshotBeforeUpdate() (que es raro), el valor que devuelve se pasará como un tercer parámetro de «instantánea» a componentDidUpdate(). De lo contrario, este parámetro no estará definido.

Nota

componentDidUpdate() no va a ser invocada si shouldComponentUpdate() devuelve false.

componentWillUnmount()

componentWillUnmount()
componentWillUnmount() se invoca inmediatamente antes de que un componente se desmonta y se destruyen. Realice cualquier limpieza necesaria en este método, como invalidar temporizadores, cancelar solicitudes de red o limpiar cualquier suscripción que se haya creado en componentDidMount().

No debe llamar a setState() en componentWillUnmount() porque el componente nunca se volverá a renderizar. Una vez que se desmonta una instancia de componente, nunca se volverá a montar.

Métodos de ciclo de vida poco utilizados

Los métodos de esta sección corresponden a casos de uso poco frecuentes. Son útiles de vez en cuando, pero la mayoría de sus componentes probablemente no necesiten ninguno de ellos. Puede ver la mayoría de los métodos a continuación en este diagrama de ciclo de vida si hace clic en la casilla de verificación «Mostrar ciclos de vida menos comunes» en la parte superior.

shouldComponentUpdate ()

shouldComponentUpdate(nextProps, nextState)

Use shouldComponentUpdate() para que React sepa si la salida de un componente no se ve afectada por el cambio actual de estado o accesorios. El comportamiento predeterminado es volver a renderizar en cada cambio de estado, y en la gran mayoría de los casos debe confiar en el comportamiento predeterminado.

shouldComponentUpdate() se invoca antes de renderizar cuando se reciben nuevos apoyos o estados. El valor predeterminado es true. Este método no se llama para el renderizado inicial ni cuando se usa forceUpdate().

Este método solo existe como optimización de rendimiento. No confíe en él para» prevenir » una representación, ya que esto puede conducir a errores. Considere usar el PureComponent incorporado en lugar de escribir shouldComponentUpdate() a mano. PureComponent realiza una comparación superficial de accesorios y estado, y reduce la posibilidad de que omita una actualización necesaria.

Si usted está seguro de que desea escribir a mano, usted puede comparar this.propsnextProps y this.statenextState y volver false decirle a Reaccionar de la actualización pueden ser omitidos. Tenga en cuenta que devolver false no impide que los componentes secundarios vuelvan a renderizarse cuando su estado cambia.

No recomendamos realizar comprobaciones de igualdad profundas ni usar JSON.stringify()en shouldComponentUpdate(). Es muy ineficiente y dañará el rendimiento.

en la Actualidad, si shouldComponentUpdate() devuelve false, luego UNSAFE_componentWillUpdate()render() y componentDidUpdate() no va a ser invocado. En el futuro, React puede tratar shouldComponentUpdate() como una sugerencia en lugar de una directiva estricta, y devolver false aún puede resultar en una nueva representación del componente.

static getDerivedStateFromProps ()

static getDerivedStateFromProps(props, state)

getDerivedStateFromProps se invoca justo antes de llamar al método de renderizado, tanto en el montaje inicial como en las actualizaciones posteriores. Debe devolver un objeto para actualizar el estado, o null para no actualizar nada.

Este método existe para casos de uso poco frecuentes en los que el estado depende de los cambios en los accesorios a lo largo del tiempo. Por ejemplo, podría ser útil para implementar un componente <Transition> que compare sus hijos anteriores y siguientes para decidir a cuál de ellos se debe animar y a cuál no.

Derivar el estado conduce a código detallado y hace que sus componentes sean difíciles de pensar.Asegúrese de estar familiarizado con alternativas más simples:

  • Si necesita realizar un efecto secundario (por ejemplo, obtención de datos o una animación) en respuesta a un cambio en los accesorios, use componentDidUpdate ciclo de vida en su lugar.
  • Si desea volver a calcular algunos datos solo cuando cambia una propiedad, utilice un ayudante de memoización en su lugar.
  • Si desea «restablecer»algún estado cuando cambie una propiedad, considere hacer un componente totalmente controlado o totalmente incontrolado con un key en su lugar.

Este método no tiene acceso a la instancia del componente. Si lo desea, puede reutilizar algún código entre getDerivedStateFromProps() y los otros métodos de clase extrayendo funciones puras de las propiedades de los componentes y el estado fuera de la definición de clase.

Tenga en cuenta que este método se activa en cada renderizado, independientemente de la causa. Esto contrasta con UNSAFE_componentWillReceiveProps, que solo se activa cuando el padre causa un renderizado y no como resultado de un setStatelocal.

getSnapshotBeforeUpdate ()

getSnapshotBeforeUpdate(prevProps, prevState)

getSnapshotBeforeUpdate() se invoca justo antes de que la salida renderizada más reciente se confirme, por ejemplo, en el DOM. Permite que su componente capture cierta información del DOM (por ejemplo, posición de desplazamiento) antes de que se cambie potencialmente. Cualquier valor devuelto por este ciclo de vida se pasará como parámetro a componentDidUpdate().

Este caso de uso no es común, pero puede ocurrir en UIs como un hilo de chat que necesita manejar la posición de desplazamiento de una manera especial.

Se debe devolver un valor de instantánea (o null).

Por ejemplo:

class ScrollingList extends React.Component { constructor(props) { super(props); this.listRef = React.createRef(); } getSnapshotBeforeUpdate(prevProps, prevState) { // Are we adding new items to the list? // Capture the scroll position so we can adjust scroll later. if (prevProps.list.length < this.props.list.length) { const list = this.listRef.current; return list.scrollHeight - list.scrollTop; } return null; } componentDidUpdate(prevProps, prevState, snapshot) { // If we have a snapshot value, we've just added new items. // Adjust scroll so these new items don't push the old ones out of view. // (snapshot here is the value returned from getSnapshotBeforeUpdate) if (snapshot !== null) { const list = this.listRef.current; list.scrollTop = list.scrollHeight - snapshot; } } render() { return ( <div ref={this.listRef}>{/* ...contents... */}</div> ); }}

En los ejemplos anteriores, es importante leer la propiedad scrollHeight en getSnapshotBeforeUpdate porque puede haber retrasos entre ciclos de vida de fase de «renderizado» (como render) y ciclos de vida de fase «commit» (como getSnapshotBeforeUpdate y componentDidUpdate).

Límites de error

Los límites de error son componentes de React que detectan errores de JavaScript en cualquier parte de su árbol de componentes secundarios, registran esos errores y muestran una interfaz de usuario de reserva en lugar del árbol de componentes que se bloqueó. Los límites de error detectan errores durante el renderizado, en los métodos de ciclo de vida y en los constructores de todo el árbol debajo de ellos.

Un componente de clase se convierte en un límite de error si define uno (o ambos) de los métodos de ciclo de vida static getDerivedStateFromError() o componentDidCatch(). Actualizar el estado de estos ciclos de vida le permite capturar un error de JavaScript no controlado en el siguiente árbol y mostrar una interfaz de usuario de reserva.

Solo use límites de error para recuperarse de excepciones inesperadas; no intente usarlos para controlar el flujo.

Para obtener más detalles, consulte Manejo de errores en React 16.

Nota

Los límites de error solo detectan errores en los componentes debajo de ellos en el árbol. Un límite de error no puede detectar un error dentro de sí mismo.

static getDerivedStateFromError ()

static getDerivedStateFromError(error)

Este ciclo de vida se invoca después de que un descendiente haya lanzado un error component.It recibe el error que se lanzó como parámetro y debe devolver un valor al estado de actualización.

class ErrorBoundary extends React.Component { constructor(props) { super(props); this.state = { hasError: false }; } static getDerivedStateFromError(error) { // Update state so the next render will show the fallback UI. return { hasError: true }; } render() { if (this.state.hasError) { // You can render any custom fallback UI return <h1>Something went wrong.</h1>; } return this.props.children; }}

Nota

getDerivedStateFromError() se llama durante el «render» de la fase, así que los efectos secundarios no son permitidos.Para esos casos de uso, use componentDidCatch() en su lugar.

componentDidCatch()

componentDidCatch(error, info)

Este ciclo de vida se invoca después de que un error ha sido lanzada por un descendiente de los componentes.Recibe dos parámetros:

  1. error El error que se produjo.
  2. info – Un objeto con una tecla componentStack que contiene información sobre qué componente lanzó el error.

componentDidCatch() se llama durante la fase de «confirmación», por lo que los efectos secundarios son permitted.It debe usarse para cosas como errores de registro:

class ErrorBoundary extends React.Component { constructor(props) { super(props); this.state = { hasError: false }; } static getDerivedStateFromError(error) { // Update state so the next render will show the fallback UI. return { hasError: true }; } componentDidCatch(error, info) { // Example "componentStack": // in ComponentThatThrows (created by App) // in ErrorBoundary (created by App) // in div (created by App) // in App logComponentStackToMyService(info.componentStack); } render() { if (this.state.hasError) { // You can render any custom fallback UI return <h1>Something went wrong.</h1>; } return this.props.children; }}

Las compilaciones de producción y desarrollo de React difieren ligeramente en la forma en quecomponentDidCatch() maneja los errores.

En desarrollo, los errores de la burbuja hasta window, esto significa que cualquier window.onerror o window.addEventListener('error', callback) va a interceptar los errores que han sido atrapados por el componentDidCatch().

En la producción, en cambio, los errores no se acumularán, lo que significa que cualquier controlador de errores de antepasado solo recibirá errores que no sean detectados explícitamente por componentDidCatch().

Nota

En caso de error, puede renderizar una interfaz de usuario de reserva con componentDidCatch() llamando a setState, pero esto quedará obsoleto en una versión futura.Use static getDerivedStateFromError() para manejar la representación de reserva en su lugar.

Métodos de ciclo de vida heredados

Los métodos de ciclo de vida siguientes están marcados como»heredados». Todavía funcionan, pero no recomendamos usarlos en el nuevo código. Puedes obtener más información sobre cómo migrar de métodos de ciclo de vida heredados en esta publicación de blog.

UNSAFE_componentWillMount()

UNSAFE_componentWillMount()

Nota

Este ciclo de vida fue anteriormente con el nombre de componentWillMount. Ese nombre seguirá funcionando hasta la versión 17. Utilice el codemod rename-unsafe-lifecycles para actualizar automáticamente sus componentes.

UNSAFE_componentWillMount() se invoca justo antes de que se realice el montaje. Se llama antes de render(), por lo tanto, llamar a setState() de forma sincrónica en este método no activará una representación adicional. En general, recomendamos usar constructor() en su lugar para inicializar el estado.

Evite introducir efectos secundarios o suscripciones en este método. Para esos casos de uso, use componentDidMount() en su lugar.

Este es el único método de ciclo de vida que se llama en el renderizado del servidor.

UNSAFE_componentWillReceiveProps()

UNSAFE_componentWillReceiveProps(nextProps)

Nota

Este ciclo de vida fue anteriormente con el nombre de componentWillReceiveProps. Ese nombre seguirá funcionando hasta la versión 17. Utilice el codemod rename-unsafe-lifecycles para actualizar automáticamente sus componentes.

Nota:

El uso de este método de ciclo de vida a menudo genera errores e inconsistencias

  • Si necesita realizar un efecto secundario (por ejemplo, obtención de datos o una animación) en respuesta a un cambio en los accesorios, use componentDidUpdate ciclo de vida en su lugar.
  • Si usó componentWillReceiveProps para volver a calcular algunos datos solo cuando cambia una propiedad, use un ayudante de memoización en su lugar.
  • Si utilizó componentWillReceiveProps para» restablecer»algún estado cuando cambia una propiedad, considere hacer un componente totalmente controlado o totalmente incontrolado con un key en su lugar.

Para otros casos de uso, siga las recomendaciones de esta publicación de blog sobre el estado derivado.

UNSAFE_componentWillReceiveProps() se invoca antes de que un componente montado reciba nuevos apoyos. Si necesita actualizar el estado en respuesta a cambios de prop (por ejemplo, para restablecerlo), puede comparar this.props y nextProps y realizar transiciones de estado utilizando this.setState() en este método.

Tenga en cuenta que si un componente padre hace que su componente se vuelva a renderizar, se llamará a este método incluso si las propiedades no han cambiado. Asegúrese de comparar los valores actual y siguiente si solo desea manejar los cambios.

React no llama a UNSAFE_componentWillReceiveProps() con accesorios iniciales durante el montaje. Solo llama a este método si algunas de las propiedades del componente pueden actualizarse. Llamar a this.setState() generalmente no activa UNSAFE_componentWillReceiveProps().

UNSAFE_componentWillUpdate()

UNSAFE_componentWillUpdate(nextProps, nextState)

Nota

Este ciclo de vida fue anteriormente con el nombre de componentWillUpdate. Ese nombre seguirá funcionando hasta la versión 17. Utilice el codemod rename-unsafe-lifecycles para actualizar automáticamente sus componentes.

UNSAFE_componentWillUpdate() se invoca justo antes de renderizar cuando se reciben nuevos apoyos o estados. Utilice esto como una oportunidad para realizar la preparación antes de que se produzca una actualización. Este método no se llama para el renderizado inicial.

Tenga en cuenta que no puede llamar a this.setState() aquí; ni debe hacer nada más (por ejemplo, enviar una acción Redux) que active una actualización de un componente React antes de que UNSAFE_componentWillUpdate() regrese.

Normalmente, este método se puede reemplazar por componentDidUpdate(). Si estaba leyendo desde el DOM en este método (por ejemplo, para guardar una posición de desplazamiento), puede mover esa lógica a getSnapshotBeforeUpdate().

Nota

UNSAFE_componentWillUpdate() no va a ser invocada si shouldComponentUpdate() devuelve false.

Otras API

A diferencia de los métodos de ciclo de vida anteriores (que React llama por usted), los métodos a continuación son los métodos que puede llamar desde sus componentes.

Hay sólo dos de ellos: setState() y forceUpdate().

setState()

setState(updater, )
setState() pone en cola cambios en el estado del componente y le dice a Reaccionar que este componente y sus niños necesitan ser re-presentado con el estado actual. Este es el método principal que se utiliza para actualizar la interfaz de usuario en respuesta a los controladores de eventos y las respuestas del servidor.

Piense ensetState() como una solicitud en lugar de un comando inmediato para actualizar el componente. Para un mejor rendimiento percibido, React puede retrasarlo y, a continuación, actualizar varios componentes en una sola pasada. React no garantiza que los cambios de estado se apliquen inmediatamente.

setState() no siempre inmediatamente actualizar el componente. Puede enlazar o aplazar la actualización hasta más tarde. Esto hace que leer this.state justo después de llamar a setState() sea una trampa potencial. En su lugar, use componentDidUpdate o un setState callback (setState(updater, callback)), cualquiera de los cuales se activará después de que se haya aplicado la actualización. Si necesita establecer el estado en función del estado anterior, lea el argumento updater a continuación.

setState() siempre conducirá a un re-procesamiento, a menos shouldComponentUpdate() devuelve false. Si se están utilizando objetos mutables y la lógica de renderizado condicional no se puede implementar en shouldComponentUpdate(), llamar a setState() solo cuando el nuevo estado difiere del estado anterior evitará repeticiones innecesarias.

El primer argumento es una función updater con la firma:

(state, props) => stateChange

state es una referencia al estado del componente en el momento en que se aplica el cambio. No debe mutarse directamente. En su lugar, los cambios deben representarse creando un nuevo objeto basado en la entrada de state y props. Por ejemplo, supongamos que queremos incrementar un valor en estado por props.step:

this.setState((state, props) => { return {counter: state.counter + props.step};});

Tanto state como props recibidos por la función de actualización están garantizados para estar actualizados. La salida del actualizador se fusiona superficialmente con state.

El segundo parámetro de setState()es una función de devolución de llamada opcional que se ejecutará una vez que setState se complete y el componente se vuelva a renderizar. Generalmente recomendamos usar componentDidUpdate() para dicha lógica en su lugar.

Puede pasar opcionalmente un objeto como primer argumento a setState() en lugar de una función:

setState(stateChange)

Esto realiza una fusión superficial de stateChange en el nuevo estado, por ejemplo, para ajustar un carrito de compras cantidad de artículo:

this.setState({quantity: 2})

Esta forma de setState() también es asincrónica, y se pueden agrupar varias llamadas durante el mismo ciclo. Por ejemplo, si intenta incrementar la cantidad de un artículo más de una vez en el mismo ciclo, el resultado será el equivalente a:

Object.assign( previousState, {quantity: state.quantity + 1}, {quantity: state.quantity + 1}, ...)

Las llamadas posteriores anularán los valores de las llamadas anteriores en el mismo ciclo, por lo que la cantidad solo se incrementará una vez. Si el siguiente estado depende del estado actual, recomendamos usar el formulario de función de actualización, en su lugar:

this.setState((state) => { return {quantity: state.quantity + 1};});

Para obtener más detalles, consulte:

  • Guía de estado y ciclo de vida
  • En profundidad: ¿Cuándo y por qué se realizan llamadas por lotes a setState()?
  • En profundidad: ¿Por qué no se actualiza de inmediato this.state?

forceUpdate ()

component.forceUpdate(callback)

De forma predeterminada, cuando el estado o los accesorios de su componente cambien, su componente se volverá a renderizar. Si su método render() depende de otros datos, puede decirle a React que el componente necesita volver a renderizarse llamando a forceUpdate().

Llamada forceUpdate() causará render() en el componente, saltar shouldComponentUpdate(). Esto activará los métodos de ciclo de vida normal para los componentes secundarios, incluido el método shouldComponentUpdate() de cada hijo. React solo actualizará el DOM si cambia el marcado.

Normalmente, usted debe tratar de evitar el uso de forceUpdate() y sólo de lectura de this.props y this.state en el render().

Class Properties

defaultProps

defaultProps se puede definir como una propiedad en la propia clase de componente, para establecer las propiedades predeterminadas para la clase. This is used for undefined props, but not for null props. For example:

class CustomButton extends React.Component { // ...}CustomButton.defaultProps = { color: 'blue'};

If props.color is not provided, it will be set by default to 'blue':

 render() { return <CustomButton /> ; // props.color will be set to blue }

If props.color is set to null, it will remain null:

 render() { return <CustomButton color={null} /> ; // props.color will remain null }

displayName

The displayName string is used in debugging messages. Por lo general, no es necesario configurarlo explícitamente porque se infiere del nombre de la función o clase que define el componente. Es posible que desee configurarlo explícitamente si desea mostrar un nombre diferente para fines de depuración o cuando crea un componente de orden superior, consulte Ajustar el nombre para mostrar para una depuración sencilla para obtener más detalles.

Propiedades de instancia

props

this.props contiene los props definidos por el autor de llamada de este componente. Consulte Componentes y accesorios para obtener una introducción a los accesorios.

En particular, this.props.children es una propiedad especial, definida típicamente por las etiquetas secundarias en la expresión JSX en lugar de en la etiqueta en sí.

state

El estado contiene datos específicos de este componente que pueden cambiar con el tiempo. El estado está definido por el usuario, y debe ser un objeto JavaScript plano.

Si no se utiliza algún valor para el renderizado o el flujo de datos (por ejemplo, un ID de temporizador), no es necesario ponerlo en el estado. Estos valores se pueden definir como campos en la instancia del componente.

Consulte Estado y ciclo de vida para obtener más información sobre el estado.

Nunca mutar this.state directamente, ya que llamar a setState() después puede reemplazar la mutación que realizó. Trate this.state como si fuera inmutable.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *