Tengo el siguiente problema: estoy usando Use Effect Hook para actualizar mi lista de tareas cuando abro mi aplicación web. Así que tengo que enumerar una lista con la tarea que tiene el atributo de tareas recurrentes (recuringTaskManager.lastWeeklyReset) y una lista que puede tener atributos con y sin recurrencia (taskList). Entonces, mi objetivo es actualizar taskList con el otro cuando ocurre una condición especial (si differenceInDays....). por lo tanto, quiero eliminar algunas tareas en Taskslist, por lo tanto, la función de filtro y agregarlas nuevamente para que se pueda actualizar un atributo especial. Descubrí que usar ganchos en condiciones y bucles siempre es malo, pero no sé cómo podría codificarlo sin bucles ni condiciones.
Tal vez tu sepas
useEffect(() => { if (!isInitialized) return if (differenceInDays(new Date("July 28, 2022 00:00:00"), state.recuringTaskManager.lastWeeklyReset) >= 7) { for (let task of state.recuringTaskManager.recuringTaskListWeekly) { const {id} = task setState({...state, taskList: state.taskList.filter((task: Task) => task.id !== id)}) state.recuringTaskManager.recuringTaskListWeekly) } setState({...state, taskList: [...state.recuringTaskManager.recuringTaskListWeekly, ...state.taskList]}) } }, [isInitialized])Lo que puede hacer para evitar eso es establecer una variable e incrementarla en el ciclo y luego establecer el estado fuera del ciclo o creo que para su caso puede hacer esto en una línea
setState({...state, taskList: state.taskList.filter(({id}) => !state.recuringTaskManager.recuringTaskListWeekly.some(({id: id2}) => id === id2))})Algunos métodos devuelven verdadero si uno de los elementos de la matriz cumple la condición, si no, devuelve falso