Представьте, что, создавая запись в localStorage, вы создаёте переменную. Что произойдёт, если этой переменной потом присвоить новое значение? Очевидно, что оно займет место старого. Так же и с localStorage: вызывая метод setItem, вы целиком перезаписываете значение "todo".
Самое банальное решение – применить конкатенацию:
function addTodo (key, value) {
localStorage.setItem(key, localStorage.getItem(key) + value))
}
Более разумное – использовать индекс в ключе:
function addTodo (key, index, value) {
localStorage.setItem(`${key}${index}`, value)
}
...или формат JSON:
function addTodo (key, value) {
let list = []
try {
list = JSON.parse(localStorage.getItem(key))
} catch (e) {
console.error(e)
}
list.push(value)
localStorage.setItem(key, JSON.stringify(list))
}