javascript - React Native - 需要立即更新变量,但 useState 是异步的?
问题描述
好的,我已经广泛研究了useState set 方法没有立即反映变化,我知道 React.useState 变量是异步的。
这是一个问题,因为我正在使用组件结构的 React Native 应用程序,并且需要在释放组件的拖动后立即设置和使用变量。我在https://github.com/tongyy/react-native-draggable#readme的 Draggable 的回调函数中执行此操作,因此来自useState set 方法的回调挂钩解决方案不会立即反映更改将不起作用。
这就是我的意思。我从这些开始React.useState
export default function App() {
const [firstColor, setFirstColor] = React.useState('');
const [secondColor, setSecondColor] = React.useState('');
然后我根据 OnDragRelease 回调函数中 Draggable 的位置更新它们:
<Draggable onDragRelease={(event, gestureState) => { ToggleComboColor1(event, gestureState); ToggleComboPage(); } } onPressIn={() => {setDidDrag1(true);}} />
这就是麻烦所在。我必须基于 设置 useState 变量gestureState
,然后如果两个 Draggables 都已被拖动,则使用以下命令切换结果ToggleComboPage()
:
const ToggleComboColor1 = (event, gestureState) => {
setFirstColor(determineDraggableColor(gestureState.moveX, gestureState.moveY));
console.log(firstColor); //This does NOT print an updated value
}
const ToggleComboPage = () =>
{
if(didDrag1 && didDrag2)
{
console.log(firstColor + " | "+secondColor); //This, consequently, does NOT print an updated value for the most recently dragged
// setCurrentColorCombo(
// getColorComboItemArray(firstColor, secondColor)[0]
// );
// setCurrentKey("Combo");
// setDidDrag1(false);
// setDidDrag2(false);
}
}
我尝试使用普通var
来规避这一点,但是每次重新渲染时都会重新渲染/重新创建这些内容。
如何在此处更新和使用这些变量?
解决方案
推荐阅读
- ios - 线程 1:致命错误:索引超出范围
- asp.net - 当文件位于不同文件夹中时,如何解决 HTTPS 安全性受损(Http 和 Https 混合内容错误)?
- javascript - 如何将此 PromiseResult 对象转换为数组?
- c - 如何在 C 中重载函数?
- reactjs - 如何使用 react 和 json-server 更新嵌套对象
- reactjs - React-Admin,通过 onChange 事件自动完成表单
- python - Django Web 应用程序中的 UnboundLocalError
- html - 您如何定位下拉菜单,使其始终与其父级对齐(关于滚动)
- ruby - #byteslice 无法正确计算包含重音符号的字符串中的字节
- matlab - 如何将二维二次函数绘制为等高线