javascript - 如何在页面重新加载事件后将 React 组件与子组件保持一致?
问题描述
这更像是一个假设性问题,因为我想在尝试为这个问题编写代码之前有一个清晰的想法。
例如,假设我有Board
(父)和Card
(子)组件。
Card
s 被放置在里面并Board
包含一些文本元素(可能是 Todo 项目),并且可以在棋盘内和从棋盘移动到棋盘。因此,状态用于允许用户将卡片从一个棋盘移动到另一个棋盘,然后“检查”一个待办事项,而不是将所有内容重置为原始位置。
但是如果我想在用户重新加载页面后坚持下去会发生什么?
我唯一的选择是localStorage
在“字符串化”之后存储所有内容,还是有其他(更好的)替代方案?
我在网上看到很多使用单个组件的示例,您只需存储该组件的状态和文本,但是对于带有子组件的组件,这似乎非常低效和复杂。
解决方案
通常的方法是使用 localStorage。localStorage 如何工作的完整示例,您可以自己更改状态。
const LOCAL_STORAGE_KEY = 'todosvar'
useEffect(() => {
const storedTodos = JSON.parse(localStorage.getItem
(LOCAL_STORAGE_KEY))
if (storedTodos) setTodos(storedTodos)
}, [])
useEffect(() => {
localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(todosvar))
}, [todosvar])
推荐阅读
- powershell - 在调用任何其他 cmdlet 之前,您必须调用 Connect-MsolService cmdlet
- laravel - 如何从 Laravel 6 的刀片视图中提取二维输入数组?
- python - 在 Powershell 中编写 Python 时,它什么也不返回
- html - 在与 CSS 并排放置的列内的元素中保持相同的高度
- reactjs - 当 mobx react 中真正需要 'action'/'runInAction' 时
- r - R - 以编程方式检测 NA 列并返回字符串
- c++ - 在函数的参数中传递指针
- java - ClassCastException: org.hibernate.hql.internal.ast.tree.SqlNode 不能转换为 org.hibernate.hql.internal.ast.tree.PathNode
- flutter - 如何在颤振中做 forEach
- mongodb - mongodump 在 mongo:latest image 的容器中突然被杀死