Tengo la aplicación React que procesa todo en el lado del cliente. ¿Está bien esperar a que se genere una cookie antes de representar los componentes de la página?

Nunca he trabajado con React antes, pero creo que esta pregunta puede ser sobre que quieres asegurarte de que el usuario tenga la cookie antes de pasar a la siguiente sección de tu código. Hay muchas formas de abordar esto, pero de las cuales 2 lo sé.

  • Puede cargar su secuencia de comandos después de que la página se haya cargado en una función anónima.

// función de ejecución automática aquí
(función () {
// el código de inicialización de tu página aquí
// el DOM estará disponible aquí
}) ();

    • Eso es más rápido que un controlador de carga porque solo espera que el DOM esté listo, no todas las imágenes y, en su caso, las cookies.
    • Puede sustituir esto con un controlador jQuery $ (document) .read (). (jQuery también tiene un complemento de cookies que puede ser útil).
  • Y en el pseudocódigo a continuación , puede verificar si existe una cookie con un intervalo de tiempo de espera de 50 ms. Sí, es un poco desordenado, pero termina el trabajo.

cookie, intentos = 0
checkForCookies = function {
si intenta === 3 {
volver // poner su propio controlador después de una cantidad determinada de eventos
}
if (// el método para obtener cookies devuelve verdadero) {
cookie de devolución
}
más {
intentos ++
setTimeout (checkForCookies, 50)
}
}

Las cookies son importantes en casi todas partes y, a veces, las personas se oponen a las cookies. Puede haber una multitud de razones por las que una cookie no se cargaría, desde un bloqueador de anuncios absurdo hasta un navegador que no toma cookies de un protocolo http: // o que simplemente no está actualizado para cargar su cookie. Es posible que esté poniendo demasiados datos o que cierto personaje de la calle sésamo podría estar comiendo hasta el tope de esa cookie.

Todo depende de cómo lo arregles.

SessionStorage y LocalStorage son muy preferidos frente a las cookies.

No creo que ningún navegador (ni complemento) bloquee SessionStorage. LocalStorage se bloqueará en modo incógnito (navegación privada).

Con respecto a las cookies, es probable que necesite configurar una cookie de sesión en su lugar o además de una cookie permanente. Sin embargo, ver arriba.

Establecer una cookie usando un encabezado HTTP desde un servidor para un SPA suena como un diseño terrible. Use Javascript y llamadas a API.

Esperar es casi siempre malo.

Las cookies deben usarse para la gestión de la sesión (¿tiene una sesión válida? Sí / no) y nada más.

Su aplicación debería poder cargar y renderizar sin ser bloqueada, pero las características se pueden deshabilitar hasta que se valide una sesión.

He visto retrasos con las cookies cuando una respuesta es grande y sin búfer y hay un gran número de cookies.

¿Por qué estamos usando cookies como otro medio de pasar datos de la aplicación? ¿No podemos almacenar datos de la aplicación en el cuerpo de respuesta? Esto es a menudo el resultado de una comunicación disfuncional entre los equipos front-end / back end.

No veo por qué no.

Puede representar datos de cookies en el estado de un Componente de reacción (es decir, this.state.cookie) y si this.state.cookie no está definido o es nulo, refleje esa lógica en la interfaz de usuario representada.