【发布时间】:2021-09-17 17:51:01
【问题描述】:
我使用 React 开发一个待办事项应用程序,事情变得更加清晰,但我很难理解“生命周期”。在 VueJS 中,我知道一个 ComponentDidMount() 钩子,如果我猜它会帮助我解决这个问题,但在 React 中我找不到它。
我有一系列类似的待办事项:const todos = [{description: "walk dog", done: false}]
这是我的应用程序的初始状态:
const [alltodos, handleTodos] = useState([]);
在加载时,我使用这个 useEffect 挂钩从 localStorage 获取数据。
useEffect(() => {
const items = localStorage.getItem("todos");
const parsed = JSON.parse(items);
handleTodos(parsed);
}, []);
我用这个函数计算我的待办事项:
const countTodos = () => {
const donetodos = alltodos.filter((item) => {
return !item.done;
});
countOpen(donetodos.length);
};
如果依赖项发生变化,我会更新计数:
useEffect(() => {
countTodos();
localStorage.setItem("todos", JSON.stringify(alltodos));
}, [alltodos]);
所以发生的情况是计数器从 0 开始,然后“闪烁”一毫秒,然后显示我从 localstorage 获得的待办事项数量。
有没有办法防止这种行为?据我所知,组件首先呈现,然后触发 useEffect 挂钩。从本地存储中提取数据后如何渲染组件?
【问题讨论】:
标签: javascript reactjs react-hooks use-state