No lo uses o serás despedido. Me pareció divertido. No sé qué dice eso sobre si eso va a cambiar en el futuro, pero sí, echemos un vistazo a lo que estaba haciendo ese perform work. Así que sí, es una referencia al segmento de reintento, que intenta renderizar ese elemento.
Así que si echamos un vistazo a esto, este segmento de reintento se encarga de resolver elementos que provienen del segmento anterior, y gran parte del trabajo se realiza en attempt resolve element. Y básicamente intenta traducir el elemento en una matriz que podemos serializar y enviar de vuelta como JSON. Puede manejar HTML, fragmentos, componentes del servidor, componentes del cliente, demos de React, pero el resultado final aquí es que convierte este elemento de React en una especie de tupla con el símbolo, el elemento, su clave y sus props. Y una vez que se ha reducido a este formato, se puede procesar como un fragmento de modelo por process model chunk.
Así que saltemos a eso. Básicamente, aquí se nos da el modelo y se convierte en una cadena y se serializa. Así que si dejo que el depurador se ejecute, podemos echar un vistazo al formato del contenido aquí. Así que vamos a abrir esto. Como podemos ver aquí, comienza con el tipo de elemento. Tenemos el nombre del elemento en sí y luego tenemos las props del elemento, y una de esas props es children, y luego se repite a sí mismo. Esta es efectivamente la representación serializada del árbol de elementos. Y tenemos una nomenclatura especial aquí que el cliente puede entender para determinar qué tipo de elemento estamos tratando aquí. Echemos un vistazo a cómo funciona esta función resolve model to JSON, que es la que genera este JSON. Básicamente, todo lo que ya se ha convertido en ese formato de tupla del que hablamos parece que se envía tal cual, pero todo lo demás se convierte en un formato similar. Parece que tiene protecciones alrededor de las cosas que no se pueden serializar en JSON, por lo que no puede serializar clases, solo puede serializar objetos JavaScript simples, no puede serializar funciones, controladores de eventos, todas las cosas que no tienen sentido representadas como una cadena. Si ejecutamos esto nuevamente hasta que lleguemos a donde se está renderizando la lista de la barra lateral, donde tenemos varios componentes, podemos ver aquí el UL. Esto está renderizando la lista de notas de la barra lateral, así que podríamos abrir ese componente de lista de notas y ver de qué está hecho.
Como vimos antes, tiene una nota de la barra lateral dentro, pero si echamos un vistazo a la nota de la barra lateral en sí, a su vez renderiza una nota de la barra lateral del cliente. Si echamos un vistazo a la nota de la barra lateral del cliente, podemos ver que tiene propiedades como ID, título, etc. Si volvemos a este JSON que se está generando, podemos ver aquí que hay muchas de estas referencias a cinco. Anteriormente, estábamos viendo un JSON en el que podíamos ver cosas como div, etc., cosas que podíamos racionalizar como elementos HTML. Pero ahora estamos viendo este at five y podemos ver las propiedades ID y título que coinciden con estas propiedades aquí, así como los hijos expandidos. Y estos marcadores de posición at five en el JSON que se envía de vuelta, y el cliente luego reemplazará estos espacios con los elementos del lado del cliente. Para concluir en el lado del servidor, lo único que queda es start flowing, que teníamos antes para el controlador de drenaje. Si vuelvo a eso. Este createDrainHandler aquí es un envoltorio alrededor de start flowing, y lo que hace start flowing es vaciar los fragmentos completados.
Comments