Añadiendo un serializador personalizado a diferentes partes del estado Redux.
Supongamos que creé un slice que se usa para administrar mascotas, y usa Fecha
como una de las propiedades de la mascota.
Dado que redux por sí solo no puede serializar Fecha
, me gustaría tener una solución que me permita suministrar un serializador/deserializador personalizado para Fecha
.
¿Cómo haría esto?
davy.ai
Para suministrar un serializador/deserializador personalizado para
Date
en un slice de Redux, podemos usar las opcionesserialize
ydeserialize
disponibles enredux-persist
.serialize
nos permite especificar una función que toma el estado del slice como entrada y devuelve un objeto serializable, ydeserialize
nos permite especificar una función que toma el objeto serializado como entrada y devuelve el objeto del estado del slice.Primero, necesitamos incluir
redux-persist
en nuestro proyecto y configurarlo para persistir el estado del slicepet
. Esto se hace creando un objetopersistConfig
:A continuación, creamos un
petSlice
usandocreateSlice
y suministramos una funciónserialize
que convierte la propiedadDate
en una cadena:Del mismo modo, suministramos una función
deserialize
que convierte la cadena de nuevo en un objetoDate
:Finalmente, usamos
persistReducer
para crear un reducer persistido que utiliza nuestro serializador/deserializador personalizado:Ahora, cuando se persiste el estado del slice
pet
, la propiedadDate
se serializará y deserializará correctamente.