React Native 的 panResponder 的 useState 的价值已经过时了吗?

2024-04-04

我需要读取的值useState in onPanResponderMove。页面加载时onPanResponderMove正确记录初始值0.

但是当我点击之后TouchableOpacity增加foo, the onPanResponderMove剧照 注销0而不是它的新值。

export default function App() {
  const [foo, setFoo] = React.useState(0);

  const panResponder = React.useRef(
    PanResponder.create({
      onStartShouldSetPanResponder: (evt, gestureState) => true,
      onStartShouldSetPanResponderCapture: (evt, gestureState) => true,
      onMoveShouldSetPanResponder: (evt, gestureState) => true,
      onMoveShouldSetPanResponderCapture: (evt, gestureState) => true,
      onPanResponderGrant: (evt, gestureState) => {},
      onPanResponderMove: (evt, gestureState) => {
        console.log(foo); // This is always 0
      },
      onPanResponderTerminationRequest: (evt, gestureState) => true,
      onPanResponderRelease: (evt, gestureState) => {},
      onPanResponderTerminate: (evt, gestureState) => {},
      onShouldBlockNativeResponder: (evt, gestureState) => {
        return true;
      },
    })
  ).current;

  return (
    <View style={{ paddingTop: 200 }}>
      <TouchableOpacity onPress={() => setFoo(foo + 1)}>
        <Text>Foo = {foo}</Text>
      </TouchableOpacity>
      <View
        {...panResponder.panHandlers}
        style={{ marginTop: 200, backgroundColor: "grey", padding: 100 }}
      >
        <Text>Text for pan responder</Text>
      </View>
    </View>
  );
}

平移响应器取决于值“foo”。useRef这里不是一个好的选择。你应该将其替换为useMemo https://reactjs.org/docs/hooks-reference.html#usememo

const panResponder = useMemo(
     () => PanResponder.create({
       [...]
        onPanResponderMove: (evt, gestureState) => {
          console.log(foo); // This is now updated
        },
       [...]
      }),
     [foo] // dependency list
  );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native 的 panResponder 的 useState 的价值已经过时了吗? 的相关文章

随机推荐

  • Android 6.0 Marshmallow:片段动画出现奇怪的错误

    我在应用商店中的一个应用程序在 Android 5 0 上运行得非常好 但自从今天我将我的设备升级到 6 0 后 我遇到了奇怪的错误 我将其范围缩小到片段过渡动画 ftrans setCustomAnimations inAnim outA
  • constexpr 函数何时在编译时进行求值?

    既然声明为 constexpr 的函数有可能在运行时被调用 那么编译器根据什么标准决定是在编译时还是在运行时计算它呢 template
  • java-8中的Stream方法是如何实现的?

    当我尝试新的 java 8 Stream 时 我想深入了解它的方法是如何实现的 所以我查看了 Stream 类的实现 发现所有方法都是抽象的 我的问题是这些方法怎么样distinct and map 它必须在某个地方有具体的实现 这些方法在
  • Apache Camel 同时处理两个 csv 文件

    我正在尝试处理两个 csv文件并将其数据保存到数据库中 我使用的是 java dsl 而不是 spring 为了更好地解释这个场景 我正在读两本 csv文件并处理它们以将数据上传到 sql 数据库中 我为此执行的步骤是 在 servlet
  • 来自 SAS url 的 Azcopy 给出错误

    我正在尝试从 SAS URL 位置复制到目标存储帐户 我尝试了以下命令 但出现了一些错误 AzCopy exe 来源 Dest https yyyyyyyy blob core windows net vhds https yyyyyyyy
  • Firebase,变量作为键名

    我基本上想做的是 variable whatever fb set variable More Stuff 因此 这将导致一个如下所示的条目 whatever More Stuff 目前它只是结束为 variable More Stuff
  • Cassandra 中的 RPC 超时

    我收到以下错误 cqlsh dev gt SELECT DISTINCT id FROM raw data Request did not complete within rpc timeout 这是一个我永远不会再进行的特殊查询 我不在乎
  • 新上传的版本未在 App Store Connect 中显示或处理

    我在过去 48 小时内上传了多个版本 但没有一个在 App Store Connect 中出现或处理 构建已通过 Xcode 成功上传 还有其他人经历过这种情况并知道潜在的解决方案吗 我已向 Apple 提交了支持票 但我希望能更快得到解决
  • 在 Java EE7 项目中找不到 web.xml

    我正在 eclipse 中使用 JSF 2 2 和 Servlet 3 1 Java EE7 做一个项目 我遇到的第一个问题是 pom xml 中的错误
  • 最有效的便携式溢出检测? [复制]

    这个问题在这里已经有答案了 与 C C 和 D 等金属语言类似 检测无符号 64 位溢出的最有效 合理可移植的方式是什么 即不使用汇编程序 尽管您可能假设二进制补码算术和环绕行为 乘法中的整数 通过将无符号类型可表示的最大值除以被乘数之一
  • 在 .NET 中使用 RPC/编码的 SOAP Web 服务时出错

    我在调用 Web 服务方法时收到以下错误 无法将 System Xml XmlNode 类型的对象分配给 System String 类型的对象 Web 服务是 PHP 服务 我使用此处定义的 wsdl 文档中的 wsdl exe 创建了我
  • 从 C# 对象自动生成 javascript 对象模型

    寻找现有的 经过验证的解决方案来快速生成客户端JavaScript 对象模型代表一个现有的 C 对象 我想象有一个 T4 模板或其他一些方法 但我缺乏找到它的术语 我不是在讨论序列化以获取现有 C 对象实例的 JSON 表示形式或任何与反序
  • 如何将字符串转换为安全的 SQL 字符串?

    我正在从一堆文本文件生成一些 sql 插入语句 这些文本文件通常是用户输入数据 我想清理这些数据 这样就不会破坏插入语句 例如 在某些输入数据中 人们使用了 Don t 一词 don t中的 会导致sql语句认为字符串已经结束 从而导致错误
  • 如何正确使用 oembed 从 youtube 中提取拇指

    我的主页上有很多来自 YouTube 视频的点赞 我使用下面的这个函数从 youtube url 中抓取拇指 它运行速度很快 但它不适用于像 youtu be JSHDLSKL 这样的缩写形式的 url function get youtu
  • JSF 和 Facelets 文件的自动重新加载

    我在使用 JRebel Spring JSF Mojarra 2 0 3 和 WebLogic 10 3 热重载 Facelets 文件时遇到了一些问题 JRebel 成功重新加载 WebContent 下的常规 Java 类和 js cs
  • System.Diagnostics.Process.Start 奇怪的行为

    我正在用 C 编写一个应用程序来启动和监视其他应用程序 我使用 System Diagnostics Process 类启动应用程序 然后使用 Process Responding 属性每 100 毫秒轮询一次应用程序的状态来监视应用程序
  • 将双精度十进制转换为十六进制、二进制和八进制字符串

    是否有一个自定义或标准库可以与 Objective C 一起使用 将十进制浮点值转换为十六进制 二进制和八进制 NSString 我一直在四处寻找 但只能找到如何通过使用以下方法转换另一个方向 从其他方向转换为十进制 double resu
  • 数组排序不起作用

    我有一组对象正在尝试排序 但它似乎不起作用 数组中的某些对象具有orderNum我要排序的属性 但并不是所有的物体都具有这个属性 我想要带有以下内容的对象orderNum要排序到数组顶部位置的属性 这是我尝试过的小提琴 http jsfid
  • Android 材料设计复制工具栏面包屑示例

    我正在尝试复制面包屑示例 我已经将 TextView 添加到工具栏 但无法完全复制工具栏样式的字体 大小 颜色 并且无法让面包屑从屏幕左侧浮动 您将需要创建自己的面包屑视图并将其添加到工具栏中 也许基于现在已弃用的碎片面包屑 https d
  • React Native 的 panResponder 的 useState 的价值已经过时了吗?

    我需要读取的值useState in onPanResponderMove 页面加载时onPanResponderMove正确记录初始值0 但是当我点击之后TouchableOpacity增加foo the onPanResponderMo