Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

Error - No se pueden leer las propiedades de Undefined

No comprendo porque date no esta definida cuando quiero que itere en los elementos de la lista.

import { createTask } from "./addTask.js";
import dateElement from "./dateElement.js";
import { uniqueDates } from "../Services/Date.js";


export const displayTasks = () => {

    const list = document.querySelector('[data-list]');
    const taskslist = JSON.parse(localStorage.getItem('tasks')) || [];
    const dates = uniqueDates(taskslist);

    dates.forEach((date) => {
        const dateMoment = moment(date, "DD/MM/YYYY");
        list.appendChild(dateElement(date));

        taskslist.forEach((task) => {

            const taskDate = moment(task.dateFormat, "DD/MM/YYYY");
            const diff = dateMoment.diff(taskDate);

            if (diff == 0) {
                list.appendChild(createTask(task));
            }

        });
    });

}

Pense que era porque el localStorage no tenia nada guardado y por eso daba undefined, pero se supone q eso se arreglaba con un pipe en

const taskslist = JSON.parse(localStorage.getItem('tasks')) || [];

1 respuesta
solución!

Encontre el problema comparando lo que fui haciendo con el codigo del aula siguiente, los problemas estaban en el archivo de DateElement.js donde trate al innerHTML como una funcion por error y en el archivo de Date.js donde olvide de retornar Unique.

El codigo correcto era el siguiente

export default(date) => {
    const dateElement = document.createElement('li');
    dateElement.classList.add('date');
    dateElement.innerHTML = date;
    return dateElement;
}
export const uniqueDates = (tasks) =>{
    const unique = [];

    tasks.forEach( task => {
        if(!unique.includes(task.dateFormat)){
            unique.push(task.dateFormat)
        }        
    });

    return unique;
};