www.state-it.info

Gran base de respuestas a las preguntas de los desarrolladores
Header decor

¿por Qué si no se usa la estrategia de onPush no se dispara el gancho OnChanges()?

zlodiak 2018-11-04 14:38:35

Trate de trabajar con la estrategia de onPush y veo resultados extraños. Por favor, ayudar a comprender. Voy a mostrar 2 páginas, el fallo sólo en uno de ellos.

En ESTE página utilizo la estrategia de onPush y obtengo el resultado esperado:

  1. en el componente de onpush-object.component durante la inicialización de la variable de entrada msg se le asigna un valor.
  2. siguiente componente principal de la sobrescribe el valor de esta entrada de la variable. Y se sobrescribe es un objeto, no su propiedad.
  3. en consecuencia, se produce la salida en consola porque se dispara el gancho OnChanges()
  4. más adelante si cambia la propiedad de un objeto de entrada en la plantilla no cambia nada porque actúa onPush
  5. por la misma razón que ahora no se dispara el gancho OnChanges


En ESTE página estoy cumpliendo lo mismo, pero la estrategia de onPush está desactivada.
  1. para darse espero que al cambio de la propiedad entrante al objeto de plantilla en el que se produce el cambio(y hay).
  2. y espero que desencadenará el gancho OnChanges(). Pero él no se dispara. no me queda claro.

Total answers: 1

StivinKing 2018-11-04 19:23:21

la Referencia a su objeto no cambia. Gancho OnChanges sólo se activa por primera vez en ambos ejemplos, y más no se dispara, así como una referencia a objeto no cambia, ya que es el mismo objeto, incluso si el contenido de un objeto ha cambiado. En el segundo caso, se vuelve a dibujar la plantilla, ya que se ha deshabilitado la estrategia de onPush. Para cuando la estrategia de onPush se procesen los cambios en el objeto hay 2 opciones: crear un nuevo objeto o utilizar хуком DoCheck y por prescribir la lógica de detección de cambio de.

Preguntas relacionadas:

Footer decor

© www.state-it.info | Base of answers to questions for developers and programmers.