Esto concluye la parte de recetas favoritas, ahora es el momento de
asegurarse de que realmente filtremos nuestras recetas porque tenga en cuenta en la pantalla de comidas
de categoría, en realidad estamos recuperando nuestras comidas filtradas de nuestro estado y ahora,
por supuesto, en nuestro estado, Las propiedades de comidas siempre contienen todas las comidas y nunca cambian, y eso es algo que
quiero cambiar como siguiente paso.
Nuevamente, comencemos agregando una acción apropiada que comience agregando un identificador que exporto aquí y nombraré este conjunto
de filtros y estableceré los filtros aquí también como un texto y crearé una acción adecuada para crear los filtros del conjunto
de funciones del creador y aquí espero obtener un
argumento con la configuración de mi filtro, que debería ser un objeto al final con los datos
isGlutenFree, isLactoseFree, isVegan e isVegetarian en él y devolveré un objeto
de acción donde el tipo de curso se establece filtros, por lo que este identificador y luego el filtros, ese
es mi objeto de configuración de filtro, por lo que este objeto con todos los valores verdaderos o
falsos para los cuatro criterios de filtro
diferentes que tenemos. Ese es el
creador de la acción, ¿ahora qué haremos en el reductor? En el reductor, ahora tenemos que manejar
ese nuevo caso, así que aquí, antes de lo predeterminado, agregaré el caso donde
manejo los filtros establecidos y para eso debe importar el identificador de filtros establecidos de las acciones de comidas
y en los filtros establecidos, el El objetivo ahora, por supuesto, es actualizar nuestras comidas filtradas para reflejar los filtros configurados.
Ahora tenga en cuenta que esto realmente contenía una clave
de filtros que al final será un objeto Javascript que tiene algo como glutenFree: verdadero, sin lactosa: falso y queremos
reflejar esta configuración en nuestra matriz de comidas filtradas. Así que aquí, tendré mis filtros aplicados, digamos donde simplemente extraigo los filtros de las acciones,
ese es, por supuesto, un
paso que podría omitir,
solo estoy tratando de escribir un código comprensible que hable por sí mismo.
Así que solo estoy extrayendo los filtros configurados por el usuario y
nos encargaremos de
enviar esta acción más tarde y luego aquí, estableceré mis comidas filtradas, crearé una nueva constante de comidas filtradas en función de mis comidas totales, así que
no las comidas filtradas pero todas las comidas disponibles y allí, quiero filtrarlas con
el
método de filtro incorporado que ofrece Javascript. El filtro siempre devuelve una matriz nueva, lo cual es bueno porque
no quiero editar ninguna matriz
existente todavía, quiero obtener una nueva matriz en su lugar y será una matriz donde se guardan todos los elementos para los que pasamos esta
función filter devuelve verdadero y descarta todos los elementos donde devolvemos falso. Esta función se ejecutará para cada comida y luego, en
esta función, podemos revisar todos los filtros que el usuario configuró y verificar si esa comida coincide con
alguno de los filtros y, por lo tanto, debe descartarse o si pasa todos los filtros, por así decirlo
y debería mantenerse.
Entonces aquí podemos verificar si hay filtros. glutenFree y simplemente espero que mis filtros, disculpe,
apliquen filtros, que este objeto que obtengo tenga una clave sin gluten.
Si eso es cierto y mi comida no está libre de gluten y, por lo tanto, necesito agregar un signo de exclamación aquí,
entonces sé que esta comida debe descartarse, ¿verdad? Porque no es libre de gluten pero tengo un
filtro que debería ser libre de gluten. Por lo tanto, devolveré falso y no me
importan otros
filtros porque ya no coincide con este filtro, puedo descartarlo. Si lo superamos si se verifica, podemos verificar el siguiente filtro, los filtros aplicados
sin lactosa.
Si eso es cierto y mi comida no está libre de
lactosa, la misma lógica que antes con los gluten, puedo devolver falso y soltarlo.
A continuación, si marca, si los filtros aplicados vegetariano están configurados y mi comida no es vegetariana, así que la misma lógica que antes, puedo dejarlo porque podría haber pasado
los otros filtros, pero si la comida no es vegetariana pero estoy buscando
comidas vegetarianas , entonces debería deshacerme de él. Y por último, pero no menos importante,
los filtros aplicados. vegano.
Si estoy buscando comidas veganas pero mi comida no es vegana aquí y, por cierto, aquí solo estoy aprovechando todas estas propiedades que son parte
de mis comidas, si echamos un vistazo a nuestros
modelos, en la comida, allí tenemos isGlutenFree, isVegan, etc. como propiedades en cada comida, por lo que cada comida
tiene la información para los filtros que deben incluirse o excluirse, por lo que cada comida
tiene
eso y solo estoy usando esto aquí en el reductor.
Por lo tanto, aquí en el caso vegano, también quiero devolver falso y solo si supero todo esto si
compruebo que sé que tengo una comida que coincide con todos los filtros que configuré y allí por ahora, puedo devolver verdadero.
Todavía estoy dentro de ese método de filtro y devuelvo verdadero, lo que
significa que quiero mantener esa comida en mis comidas filtradas constante, que es mi nueva matriz y ahora, en general, después de derivar esta
matriz de comidas filtradas, tengo que devolver un nuevo estado copiando el estado anterior y luego quiero anular mis comidas
filtradas aquí con las comidas filtradas que obtuve aquí. Entonces, las comidas filtradas a la izquierda del colon son
la propiedad
en el objeto de estado, por lo que esencialmente esta propiedad y las comidas filtradas en el lado derecho
del colon se refieren
a esta constante, también puedo nombrar estas comidas filtradas actualizadas para que sea más claro al respecto.
Así es como se actualiza mi estado cuando se establecen los filtros.
Ahora, por supuesto, debemos asegurarnos de que también despachemos esta acción eventualmente.