【发布时间】:2020-11-19 08:25:34
【问题描述】:
我正在尝试使用本地存储来存储和排列它,但是当我重新加载它时,它会重置阵列。我查看了一些类似的问题,并从提供的答案中做了我能理解的一切,所以我猜问题可能出在我的代码上,所以请帮我检查一下。提前致谢
import React, { useState } from 'react'
import Modal from './Modal'
function Boards() {
const [boards, setboards] = useState([]);
const [title, settitle] = useState('');
localStorage.setItem('boards', JSON.stringify(boards));
let storedboards = JSON.parse(localStorage.getItem('boards')) || [];
const handleChange = (e) => {
settitle(e.target.value)
}
const handleSubmit = () => {
if (title.length === 0) {
return;
}
setboards(prev => (
[
...prev,
title
]
))
}
return (
<div>
<ul id="boards">
<BoardList boards={boards} />
</ul>
<Modal title={title} handleChange={handleChange} handleSubmit={handleSubmit} />
</div>
)
}
function BoardList({ boards }) {
const history = useHistory()
return (
<>
{
boards.map((board, index) => (
<li key={index} onClick={() => { history.push('./workspace') }}>
<h3>{board}</h3>
</li>
))}
</>
)
}
export default Boards
【问题讨论】:
-
你的组件做的第一件事就是用这一行将 localStorage 设置为一个空值:
localStorage.setItem('boards', JSON.stringify(boards)); -
好的,那么有什么更好的方法。请原谅我是新手
-
假设您只想在对列表进行一些更改时写入 localStorage,然后将该行代码移动到您的更改处理程序。
-
当我这样做时,它根本不会更新本地存储,即使没有重新加载本地存储仍然是一个空数组
-
对 - 你有两个变更处理程序 - 对吧?
标签: javascript arrays reactjs local-storage