Red de conocimiento informático - Aprendizaje de programación - principio de inmersión

principio de inmersión

Con respecto al análisis resumido del código fuente immer, según el código fuente anterior, es ligeramente diferente del código fuente actual. Puede consultar la idea general. Si lo está leyendo usted mismo, es mejor utilizar el código fuente en github como referencia. Después de todo, el código fuente del artículo está desactualizado en algún momento.

El código fuente involucrado a continuación es de la versión 7.0.9.

El principio de immmer involucra funciones de ES6:

El siguiente es un ejemplo de interceptación de propiedades de lectura:

Operaciones de interceptación admitidas por Proxy:

immmer aprovecha la función Proxy.

Lo principal que hay que saber es la API pruduce, que en la mayoría de los casos es suficiente para implementar datos inmutables.

obj es un objeto ordinario. immer genera un objeto borrador para obj a través de un proxy. Cuando opere en el borrador, escuchará los cambios en el borrador y lo personalizará como una función de configuración.

En la función de establecimiento, no modifica el valor del objeto original, sino que lo copia recursivamente al objeto principal y eventualmente devuelve un nuevo objeto de nivel superior como el valor de la función de producción.

Este método de producción es en realidad el método de producción en la clase Immer.

Desde el código fuente, puede ver aproximadamente el valor de los datos pasados ​​a producir (el valor está redactado, principalmente como tipo de referencia). ) generará un valor de objeto proxyProxy y el estado correspondiente a través del proxy.

estado es el estado de cada objeto de valor, que se utiliza para registrar si los datos han cambiado, si es necesario generar una nueva copia, si es necesario reemplazarlo, etc.

valueProxy puede entenderse como el borrador de nuestra operación. valueProxy determina y procesa datos según el estado escuchando los métodos get y set, etc.

Finalmente, devolverá los datos inmutables que procesamos.

1. Comenzando con ECMAScript 6

2. Documentación oficial de immer

3. Lea el código fuente de Immer.js - Huang Ziyi

4. Análisis exhaustivo de Immer-Sheepy

4.