当前位置: 首页 > 知识库问答 >
问题:

反应:如果运行另一个事件函数,则变量重置为默认值

红经亘
2023-03-14

我在React中有以下代码:

let down = 0

const moveUp = e => {
//other code
let up = down - 300
}

const moveDown = e => {
//other code
down = down + 300
}

<Button onClick={moveUp} btntext="Up"/>
<Button onClick={moveDown} btntext="Down"/>

Down是用户单击的第一个按钮,它将Down变量增加300,所以假设我们将Down变量增加了3倍,即900。

问题是,当我们试图点击向上按钮引用moveUp函数时,向下变量现在被设置回默认值0,为什么会发生这种情况,900的更改不应该存储在内存中吗?

我真的很想在这里得到一些帮助,很明显,我对Javascript事件和变量范围有一些不理解的地方。

共有1个答案

蒋高超
2023-03-14

尝试将向下存储为状态变量。你的组件可能会在某个地方重新渲染,导致down初始化回0。

更新将是

import React, { useState } from 'react'

const [down, setDown] = useState(0)

const moveUp = e => {
    //other code
    setDown(down - 300)
}

const moveDown = e => {
    //other code
    setDown(down + 300)
}

<Button onClick={moveUp} btntext="Up"/>
<Button onClick={moveDown} btntext="Down"/>
 类似资料:
  • 不确定之前是否有人遇到过类似的问题。当我创建一个远程配置参数并将其选择为不带条件值的布尔值时。在我的iOS项目中,firebase可以正确读取它。然而,当我开始使用条件语句时,它会检查用户是否在特定位置,例如下图中的英国。 设置此参数时,我执行了以下操作: 每次我访问“test_country”参数时,它都显示默认值false,而不是预期的“true”。我查看了关于堆栈溢出和设置的不同问题 co

  • 我有一个父子关系的组件,我试图设置。我想让父级保留事务(React组件)的原始状态的知识,然后根据新事务是否小于原始金额来确定是否允许添加新事务。我不知道如何在单击调用时正确地将数据从一个组件传递到另一个组件。下面列出了我的原始组件。请发送帮助! "' "'

  • 问题内容: 这个问题已经在这里有了答案 : 有没有办法将默认参数设置为等于另一个参数值? (4个答案) 5年前关闭。 是否可以在同一函数定义中将函数参数的默认值定义为另一个参数?就像是: 但这没用。 问题答案: 不可以。Python解释器认为要说法的默认值分配到一个全局变量时,没有一个全局变量。 您可能想要尝试这样的事情:

  • 如果未在 Go 中设置环境变量,如何分配默认值? 在Python中,我可以做其中是默认值,如果env var未设置。 我尝试了基于 os 的 if 语句 是空的,但由于 if 语句中的变量赋值范围,这似乎不起作用。而且我正在检查多个 env var,所以我无法在 if 语句中对这些信息采取行动。

  • 问题内容: 根据SCJP6(页507),我发现在超类构造函数完成之前为实例变量分配了默认值,我在Debugg模式下尝试了一个示例,但是我看到超级承包商在实例变量获得其默认值之前运行,可以有人解释吗?那对我呢? 我使用的示例,以防有人要尝试: 问题答案: 初始化序列在JLS 12.5中 指定: 首先,为新对象分配内存 然后,将对象中的所有实例变量(包括在此类及其所有超类中定义的实例变量)初始化为其默

  • 我不是一个JavaScript/jQuery编码器,不确定我要做的事情是否可能。 我有一个HTML/PHP/Ajax表单,它在用户填写时更新了sql数据库。当他们填写表单时,JavaScript/jQuery会运行一个进度条,该进度条会随着用户在输入中键入内容而更新。函数的开始如下所示: 这个很管用。我的问题是重新加载页面的时候。我的代码是从数据库中提取sql数据来填充页面上每一个有值的输入的值,