reactjs - 使用添加计数按钮重新渲染太多
问题描述
我是 React 的新手。我有一个简单的页面,其中的按钮将计数增加 1 或减少 1。解决方案显示了正确的方法,即使用减号按钮的内联函数。但是,当我将加号按钮更改为使用常规功能时,我获得太多重新渲染。
import React, { useState } from 'react'
import randomColor from 'randomcolor'
export default function Playground() {
const [count, setCount] = useState(0)
const add = (n) =>{
setCount(n+1);
};
return (
<div>
{count}
<button onClick={() => add(count)}>+</button>
<button onClick={() => setCount(count - 1)}>-</button>
</div>
)
}
解决方案
你不能通过add()
,因为它会执行函数并触发无限循环。只是传递add
方法的引用,所以它只会在点击事件上执行
import React, { useState} from 'react'
const App = () => {
const [count, setCount] = useState(0);
const add = (n) =>{
setCount(count+1);
}
return (
<div>
{count}
<button onClick={add}>+</button>
<button onClick={() => setCount(count - 1)}>-</button>
</div>
)
}
export default App;
推荐阅读
- python - 选择和消除时间戳太接近其他行的数据帧行
- python - 使用 pyautogui 模块时 Mac 上的 Crontab 错误
- docker - Couchbase 社区服务器从 CE5.1.1/CE6.0.0 升级到 CE6.5.1 失败
- microsoft-graph-api - “所提供的论据之一是不可接受的。” 当我尝试更新共享链接权限时
- java - 如何从给定 Flux 的 2 中获得一个共同元素?
- python - 如何从数据库中获取与 ID 对象相关的信息
- firebase - 如何清除 Firebase 存储?
- mysql - MySQL查询行到列
- image - 如何在不使用异步函数的情况下将在线图像路径转换为 base64?
- jquery - 完全中止 ajax 和计时器