React Native:状态更新未反映在onPress事件内的即时函数调用中[重复]

2wnc66cl  于 2023-06-06  发布在  React
关注(0)|答案(1)|浏览(121)

此问题已在此处有答案

The useState set method is not reflecting a change immediately(17回答)
6天前关闭
我有一个React Native组件,我在onPress事件处理程序中使用setter函数(setSubtractArr)更新状态变量。然而,我面临着一个问题,状态更新似乎没有同步发生,导致在状态更新后立即调用另一个函数(endFunction)时出现问题。

const handlePress = () => {
  // State update
  props.setSubtractArr(prev => prev + (props.workoutInfo.reps * props.workoutInfo.interval / 1000));
  
  // Log the updated value
  console.log('subtractArr:', props.subtractArr);
  
  // Call another function with the updated value
  endFunction(props.subtractArr); // Not reflecting the updated value
};

return (
  <TouchableOpacity onPress={handlePress}>
    {/* My TouchableOpacity content */}
  </TouchableOpacity>
);

在上面的代码中,console.log语句正确地输出了subtractArr的更新值,但是当将props.subtractArr传递给endFunction时,它没有反映更新后的值。看起来状态更新是异步的,不会立即发生。
如何确保在onPress事件处理程序中使用已更新的subtractArr值调用endFunction之前完成状态更新?
任何帮助或指导都将不胜感激。谢谢你!

xkrw2x1b

xkrw2x1b1#

每当props.subtractArr发生更改时,都需要运行endfunction(...)
尝试将此代码添加到您的:

useEffect(() => {
  endFunction(props.subtractArr);
}, [props.subtractArr]);

相关问题