【发布时间】:2020-03-27 12:43:21
【问题描述】:
我正在尝试使用 LocalStorage,这样每次我添加一个新任务时,它都会添加到 localstorage,但目前它总是会覆盖原来的任务。
我有一个 LocalStorage 的包装器:
export const setLocalStorage = (item) => {
localStorage.setItem('todo', JSON.stringify(item));
}
然后我有一个导入包装器的 React 组件,我在该组件中有一个简单的表单,带有一个输入字段和一个按钮:
<Button onClick={(e) => { saveTodo(e) }}> Save Changes </Button>
saveTodo 功能:
constructor(props) {
super(props)
this.state = {
todo: '',
}
}
const saveLog = (e) => {
e.preventDefault();
setLocalStorage(this.state.todo);
}
现在每次我通过点击按钮执行函数时,LocalStorage 都会被新值覆盖,但我想继续添加到本地存储中
我怎样才能做到这一点?
这是我到目前为止所做的:
export const setLocalStorageItem = (todo) => {
var todoList = JSON.parse(localStorage.getItem('todo')) || [];
console.log(todoList);
todoList.push(todo)
localStorage.setItem('todo', JSON.stringify(todoList));
}
我在 localsotage 中添加了两项:
Storage {todo: "["hello","123"]", length: 1}
length: 1
todo: "["hello","123"]"
__proto__: Storage
所以现在可以完美运行了:)
【问题讨论】:
-
保存一个数组到LS,读取它,添加一个新项目并再次写入/保存?
-
ps 你要找的词是“覆盖”
-
这能回答你的问题吗? adding new objects to localstorage
标签: javascript reactjs