【发布时间】:2020-05-14 09:48:11
【问题描述】:
我正在尝试从另一个函数更新状态的值。
我已经这样声明它们了:
const App () => {
const [positionAX, setPositionAX] = useState(100)
const [positionAY, setPositionAY] = useState(100)
}
App之外我还有一个功能:
const setPosition = () => {
setPositionAX(200);
setPositionAY(200);
}
当我打电话给setPosition() 时,我得到了错误:
找不到变量:setPositionAX
找不到变量:setPositionAY
我尝试将const [positionAX, setPositionAX] = useState(100) 移动到我的文件顶部,但随后出现错误:
无效的挂钩调用。钩子只能在函数体内调用。
如何从其他函数更新该变量?
为@t-j-crowder 编辑 1
我似乎无法让它工作,我不确定我做错了什么
这是你给我的代码的现场小吃示例:https://snack.expo.io/Cd!hwDQ0m
如果我添加警报:
alert("pressed")
进入 handleClick 函数,由于某种原因它不能与 setPositionA([200, 200]) 一起工作。
另外作为补充说明: 在我的应用示例中,有两个功能和设置状态的功能,以及显示状态的功能是分开的,这就是为什么我遇到了我在最初的堆栈溢出帖子中提出的问题。
这是我想要实现的那个例子的一个小例子:
https://snack.expo.io/6TUAkpCZM
我使用 'positionX' 和 'positionY' 作为变量来定义渲染出来的元素的顶部和左侧位置,但是,positionX 和 positionY 变量的实际设置是在另一个中完成的功能
我是一名初级开发人员,所以我真的要感谢你在这方面的所有帮助,如果这是超级小白,我也深表歉意。
为:Muhammad Numan 编辑 2
我尝试了你的方法,但我似乎无法让它工作。我认为对于我想要实现的目标以及想要实现的目标存在一些困惑。这可能是我的错,因为我是一个新手开发者,所以请原谅我。我不想只发布我所有的代码,因为我认为人们不赞成只转储代码并像“修复这个”一样 - 但是,对于这种情况,它可能是最好的哈哈。
这是我的代码的完整小吃:https://snack.expo.io/uk8yb5xys
我想要的是这个:
指示用户从单词“start”到单词“end”画一条线。如果绘制了线并且用户线的起点和终点与给定的路径匹配,那么他们将呈现另一条线来绘制并且“开始”和“结束”的位置将移动,以便用户知道在哪里绘制。
有注释行:
// 这里是我需要更新 START 和 END 值的地方
这就是我需要“开始”一词和“结束”一词来移动到新位置的地方。
目前,当您画一条完整的线并将手指从屏幕上移开时 - 没有任何反应。但是,当您将手指放下时,开始和结束移动。当用户抬起手指时,我需要它们移动。
感谢您抽出宝贵的时间,非常感谢。
【问题讨论】:
-
我已经完成了 snack.expo.io/i_RJHi0_v 。我在开斋节很忙
-
你没有回复我也没有测试我的解决方案
标签: javascript react-native scope hook