javascript - 如何在计数器应用程序上保存计数并将该计数显示在显示先前计数的列表中?(使用反应)
问题描述
我创建了一个简单的计数器应用程序,允许您增加、减少和重置计数。下一个目标是保存计数,您可以在其中显示以前计算的历史记录。从为“保存计数”按钮创建功能组件开始。
我通过创建一个空的 useState 数组来解决这个问题。然后为 saveCount 创建一个 onClickFunction,其中 savedCount 将扩展运算符应用于计数,然后每次按下“保存计数”按钮时我都会映射数组。这是基于以下链接中的“useState with Array”示例:
https://daveceddia.com/usestate-hook-examples/
您可以在下面找到我尝试过的代码(也使用此链接:https ://codesandbox.io/s/counter-app-project-save-nx7x6?file=/src/index.js:286-1297 ):
function App() {
const [count, setCount] = useState(0);
const savedCount = useState([]);
const incrementCount = increment => {
setCount(count + increment);
};
const decrementCount = decrement => {
setCount(count - decrement);
};
const resetCount = () => {
setCount(0);
};
const saveCount = () => {
savedCount([
...count,
{
id: count.length
}
]);
resetCount();
};
return (
<div className="App">
<ButtonIncrement increment={1} onClickFunction={incrementCount} />
<ButtonIncrement increment={10} onClickFunction={incrementCount} />
<ButtonDecrement decrement={1} onClickFunction={decrementCount} />
<ButtonDecrement decrement={10} onClickFunction={decrementCount} />
<Reset onClickFunction={resetCount} />
<span>{count}</span>
<Save onClickFunction={saveCount} />
<ul>
{savedCount.map(count => (
<li key={count.id}>count</li>
))}
</ul>
</div>
);
}
解决方案
- 修复
savedCount
为useState
返回一个数组(元组[state,setState]
)。 saveCount
使用功能时修复useState
。- 使用唯一
key
道具渲染列表项。
const [savedCount, setSavedCount] = useState([]);
const saveCount = () => {
setSavedCount(prev => [...prev, { id: count }]);
resetCount();
};
<ul>
{savedCount.map((count, index) => (
<li key={index}>count: {count.id}</li>
))}
</ul>
推荐阅读
- python - 如何清除 tkinter 组合框?
- java - Java中的字符串递归方法
- java - 让我的谷歌助手在特定的词上调用我的 REST API
- c++ - c++ 如何使用 Variadic 创建闭包?
- javascript - 您是否应该向前端公开一个将数据写入数据库的函数?
- jquery - 通过 TEXT 使用 jQuery 搜索复选框列表项
- node.js - 为什么 MongoDB 无法连接到我的 NodeJS 应用程序?
- c++ - 无法调试 C++ 可执行文件(“断点当前不会被命中”)
- css - 闪亮的布局:使用可滚动面板和保持固定的面板构建闪亮的页面
- rust - 货物条件依赖特征