javascript - 反应错误:重新渲染太多。使用箭头功能时
问题描述
我正在制作一个计算器,其中我制作了数字按钮,当按下按钮“7”时,在输入字段中添加 7。
我的方法:
我正在使用 useState 来做到这一点。我制作了一个箭头函数 funinpval,它将数字作为参数中的字符串,然后我通过将相应的数字作为参数传递来将此函数与不同的按钮 onclick 处理程序一起使用。但我收到错误
import React from 'react'
import { useState } from 'react';
export const Calculator = () => {
const [inpval, setInpval] = useState("")
const funinpval = (num) => {
setInpval(inpval + num)
}
return(
<>
<input type="text" value={inpval}>
<button onClick={funinpval("7")}>7</button>
<button onClick={funinpval("8")}>8</button>
</>
)
谁能帮忙
解决方案
<button onClick={funinpval("7")}>7</button>
<button onClick={funinpval("8")}>8</button>
您无需等待用户单击按钮来执行功能,而是在每个渲染阶段直接执行它们。这意味着组件渲染 -> 状态更新 -> 新的重新渲染 -> 新的状态更新 -> ...
要解决这个问题:
<button onClick={() => funinpval("7")}>7</button>
<button onClick={() => funinpval("8")}>8</button>
推荐阅读
- bash - 读取/合并属性文件到 1 行,忽略 unix shell 中的注释
- arrays - 如何在 Ruby on rails 上删除哈希数组中的重复行
- javascript - 如何降低此代码的时间复杂度
- c# - System.Data.SqlClient.SqlException: '无效的列名'"
- java - MS SQL Server 域授权因 JDBC 失败
- php - \n 使用 chrome 浏览器时不能在 php 代码中工作
- dimensions - R dim 参数说明
- dart - 如何将 Iconbutton 单击后更改为不同的 Iconbutton
- c# - unity:围绕两个Vector3的中心旋转一个网格
- linear-programming - CVRP 无需访问每个节点