Estoy construyendo una aplicación mini-swiggy para vender pizza solo con funcionalidades básicas. La aplicación básica está disponible aquí . Esta aplicación no tiene una función de inicio de sesión/registro que quiero agregar a esta aplicación. Quiero aprender el almacenamiento de sesiones mientras implemento esto.
Mi pregunta es:
¿Debo hacer una llamada a la API cada vez que el usuario hace clic en el botón Agregar y actualizar el carrito en la base de datos? (Actualmente está siendo manejado por la API de contexto de reacción usando el almacenamiento local, no hay una base de datos como tal por ahora. Al realizar el pedido, simplemente estoy vaciando el almacenamiento local).
Ahora se requiere la base de datos para las funciones.
Podría seguir usando el almacenamiento local para actualizar los carritos y solo hacer una llamada API cuando el usuario realiza un pedido. Y puedo vaciar el carrito del almacenamiento local una vez que se realiza el pedido. (Esto es lo que creo que es más óptimo, ya que será mejor para el rendimiento y también reducirá la carga del servidor).
¿Se puede lograr todo esto sin usar redux?
Amablemente ayude, considerando que quiero que sea una aplicación con las mejores prácticas. Además, si tiene algunos buenos recursos, comparta, soy un poco novato aquí.
En caso de que pueda pensar en otras características, hágamelo saber :)
Pregunta muy interesante, responderé solo una parte, de lo contrario, será demasiado largo para leer :)
Ya sea que necesite realizar una llamada a la API para conservar el carrito del lado del servidor o simplemente hacerlo solo una vez que se haya realizado el pedido, es una cuestión relacionada con la lógica comercial de su aplicación en sí.
Haga una pregunta: "¿Quiero que mis usuarios puedan agregar artículos al carrito y ver/actualizar/editar su contenido incluso si inician sesión desde una máquina/navegador diferente?"
Si la respuesta es sí, entonces seguro que debe sincronizar su carrito con el servidor para que siempre sea consistente. Para este propósito, sugeriría tener una especie de cola, que tendrá la última versión del carrito modificado localmente, una vez que el usuario no realizó ninguna acción durante 2000 ms en su carrito, puede realizar una llamada API de manera segura y conservar la información del carrito. en tu base de datos.
Esto reducirá la carga de su servidor, porque las personas pueden incrementar la cantidad de artículos que tiene en el carrito haciendo clic 20 veces en el botón add , en este caso, en lugar de enviar 20 solicitudes al servidor una a la vez, simplemente retrasa el proceso de persistencia del carrito, hasta que el usuario deja de interactuar con su aplicación por una cantidad X de milisegundos.
Para empezar, quiero decir que me gustó mucho tu CSS :).
No tiene que usar una base de datos o redux para hacer un sistema de carrito, pero como puede adivinar, tienen buenas oportunidades.
VENTAJAS DE LA BASE DE DATOS :
DESVENTAJAS DE LA BASE DE DATOS :
VENTAJAS REDUCIDAS
DESVENTAJAS REDUCIDAS
VENTAJAS DEL ALMACENAMIENTO LOCAL
DESVENTAJAS DEL ALMACENAMIENTO LOCAL
No separé el almacenamiento de la sesión porque es lo mismo que el almacenamiento local . La única diferencia es que el almacenamiento de la sesión es por pestaña .
En mi opinión , deberías usar una base de datos . Sé que es una aplicación básica, pero puedes aprender muchas cosas al hacerlo de esta manera.
Y estas son mis recomendaciones: