【发布时间】:2021-10-27 07:06:14
【问题描述】:
我刚开始学习 React JS,并且正在尝试一个简单的项目,我点击一个按钮并将一个随机数添加到一个数组中。这是我的代码:
function App() {
const [cache2, setCache2] = useState([])
const nextNumber = () => {
const randomNr = Math.floor(Math.random() * 10)
const newCache = cache2.push(randomNr)
setCache2(newCache)
console.log(cache2)
}
return (
<div className='App'>
<button onClick = {nextNumber}>Next Number</button>
</div>
);
}
但是,它会引发“cache2.push 不是函数”错误。我无法找出问题所在。有人可以帮帮我吗?
【问题讨论】:
-
const newCache = cache2.push(randomNr)Push 返回一个添加的元素,而不是一个新数组 -
永远不要推送状态,因为推送会改变原始数组并且在反应状态下不应该直接改变。你需要这样做
setCache2(currentCache => ([...currentCache, randomNr]))