React-native: 尝试从状态 `RESPONDER_INACTIVE_PRESS_IN` 转换为不支持的 `RESPONDER_ACTIVE_LONG_PRESS_IN`。

创建于 2016-02-08  ·  162评论  ·  资料来源: facebook/react-native

类似于#1693。 在 React Native 0.19.0 上使用 Chrome 调试的Touchable组件似乎存在问题。

Attempted to transition from state `RESPONDER_INACTIVE_PRESS_IN` to `RESPONDER_ACTIVE_LONG_PRESS_IN`, which is not supported.
This is most likely due to `Touchable.longPressDelayTimeout` not being cancelled.

stack:
reactConsoleError                                 @ ExceptionsManager.js:76
console.error                                     @ YellowBox.js:49
TouchableMixin._handleLongDelay                   @ Touchable.js:575
JSTimersExecution.callbacks.(anonymous function)  @ JSTimers.js:47
JSTimersExecution.callTimer                       @ JSTimersExecution.js:69
JSTimersExecution.callTimers                      @ JSTimersExecution.js:92
__callFunction                                    @ MessageQueue.js:183
(anonymous function)                              @ MessageQueue.js:87
guard                                             @ MessageQueue.js:41
callFunctionReturnFlushedQueue                    @ MessageQueue.js:86
onmessage                                         @ debuggerWorker.js:39

产生此错误的代码来自使用 TouchHighlight 组件的新启动应用程序:

class App extends Component {
  constructor() {
    super()
    this.state = {
      testText: ''+Math.random()
    }
  }

  _updateTouch(e) {
    this.setState({testText: ''+Math.random()})
  }

  render() {
    return (
      <View style={styles.container}>
        <Text>
          {this.state.testText}
        </Text>
        <TouchableHighlight onPress={this._updateTouch.bind(this)}>
          <Image
            style={width: 100, height: 100}
            source={{uri: 'http://facebook.github.io/react/img/logo_og.png'}}
          />
        </TouchableHighlight>
      </View>
    );
  }
}

PS有没有更好的方法来复制堆栈跟踪? 我只是从 Chrome 开发工具控制台复制

Locked

最有用的评论

添加视图后修复

<TouchableNativeFeedback>
     <View> // <= here
         <Text style={css.item}>{rowData.title + rowData.id}</Text>
     </View>
</TouchableNativeFeedback>

所有162条评论

嘿 Dyscrete,感谢您报告此问题!

正如您可能听说的那样,React Native 变得非常流行,而事实是我们对围绕它的活动有些不知所措。 有太多问题需要我们妥善管理。

  • 如果您不知道如何做某事某事未按预期工作但不确定这是一个错误,请使用标签react-nativeStackOverflow上询问,或者要获得更多实时交互,请在Discord上询问#react 原生频道。
  • 如果这是您希望修复Product Pains上报告。 它有一个排名功能,让我们可以专注于社区正在经历的最重要的问题。
  • 我们欢迎已准备好进行深入讨论的明确问题和 PR。 请在适当的地方提供屏幕截图,并始终提及您使用的 React Native版本。 感谢你的贡献!

在 iPhone6 (9.1) 上测试时出现同样的错误

这个问题与#1693 有什么不同? 一般来说,这个问题似乎是一样的。 我们可以关闭它并在那里继续进一步调查,因为它有更多细节吗?

+1
我也遇到这个问题,经常切换导航器

将关闭它,因为@askday还在#1693 中提供了更好的重现。 如果 OP 提到了不同的东西,请重新打开。

对我来说同样的错误。
反应 0.31
铬调试。
正常使用是没有问题的。

console.error: “试图从状态RESPONDER_INACTIVE_PRESS_INRESPONDER_ACTIVE_LONG_PRESS_IN ,这是不受支持的。这很可能是由于Touchable.longPressDelayTimeout没有被取消。

Object.console.error
YellowBox.js:60
构造函数._handleLongDelay
Touchable.js:595
JSTimersExecution.callbacks.(匿名
index.ios.bundle?platform=ios&dev=true&minify= false:8476 :13
对象调用定时器
JSTimersExecution.js:84

JSTimersExecution.js:119
对象调用定时器
JSTimersExecution.js:119
MessageQueue.__callFunction
MessageQueue.js:204

MessageQueue.js:95

+1

+1

+1

+1

:+1:

👍

+1

+1

+1

+1

+1

+1

+1

+1

+1

我也有这个错误,但仅限于Android。 IOS 正在按预期工作。

+1

+1

+1

+1

+1

+1

+1

+1 相同的错误仅在 Android 上,但 iOS 工作正常。

+1 与@binzailani3136相同

+1

恭喜此bug当选 RN0.39版 最臭名昭著的issue之一

+1

+1

+1

+1

+1

+1

+1

+1

伙计们,你的 +1 没有帮助,这是在 #1693

+1

+1

+1

+1

+1

+1

我看到很多人似乎总是有这个问题,这个问题已经关闭,所以我在这里创建一个新的:#11989

+1

+1

@magrinj ,为什么这个问题在这么多人(包括我刚刚在 RN 0.37 上)继续遇到此错误时关闭? 应用程序方面是否有权宜之计?

@fungilation可能是我开新票搞错了,因为这个是开票的,讨论同样的问题:#1693

添加视图后修复

<TouchableNativeFeedback>
     <View> // <= here
         <Text style={css.item}>{rowData.title + rowData.id}</Text>
     </View>
</TouchableNativeFeedback>

@Yadro ,你的意思是插入额外的 View 从应用程序端修复这个问题,或者 RN 可以通过这样做在内部修复它?

嗯,我的英语不好,但插入额外的视图可以解决这个问题

行。 如果我仍然通过其他视图遇到此问题,我会报告

+1

我只有在远程调试时才会得到这个。 这通常不会发生。 注册护士 .41.2。 Windows 10. 安卓

+1

@ckwong90 ,这里有些,只有在远程调试时才会出现
注册护士 .41.2。 macOS Sierra 10.12.3

  • 1个同样的问题

同上,Android 6.0,最新RN,远程调试

+1

+1

+1

我在 Chrome 中遇到react-native-button和调试模型的这个问题

我通过用 View 包装 Button 组件解决了这个问题。

+1

我已经将组件包装在一个视图中,但是出现了这个错误。 之后,我的应用程序中的任何 TouchableHighlight 都会引发此错误。 通过清除设置中的应用程序数据解决了它(临时?)。 问题出现在 Android、Emulator、Win10、RN 0.42.3 中,“Debug JS Remotely”没有“Hot Reloading”。

同样在这里

+1

  • 1

+1 在我切换导航器时发生

+1

得到了同样的错误。 从 XCode 重建应用程序为我解决了这个问题。

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

这方面有什么进展吗?

远程调试时会出现此问题。

任何人?!

开发 3 周后,当我使用 nativebase Fab 组件时,突然出现此问题。 希望F8能解决这个问题

有同样的问题,

+1

+1

+1

+1

    render() {
        let {onNavigateToOfferScreen, navigation} = this.props;
        let {dataSource} = this.state;
        return (
            <ListView style={styles.container} dataSource={dataSource} renderRow={offer => (
                <TouchableHighlight onPress={() => onNavigateToOfferScreen(offer)}>
                    <View style={styles.row} elevation={2}>
                        <Text style={styles.businessName}>{offer.name}</Text>
                    </View>
                </TouchableHighlight>
            )}/>
        );
    }

+1

一样的东西

+1

+1

+1

+1

+1 .... 在我开始使用 fetch 后会弹出这个错误...

同样的问题附加视图不起作用

+1

+1

计数++

+1

停止 +1 垃圾邮件。 如果您看到相同的内容,只需给原始帖子或任何评论点赞👍🏼。

@杀菌👍

+1

这仅在远程调试时发生,我通过执行以下操作临时修复了此问题:

  1. 打开安卓设置
  2. 应用
  3. 单击您的应用程序
  4. 贮存
  5. 清除缓存

注意:这确实是一个临时解决方案。 它仍然时不时地反复弹出。

@Jarrio谢谢

@lukemiles 的想法?

+1

+1

+1

@Jarrio的 tmp 解决方案现在有效

+1

+1

+1

48 +1,

+1

48 + 1

仅当启用远程 js 调试时才会出现问题......在正常模式下它工作正常。

49.3+ 1

+1

+1

+1

image+1

我将TouchableHighlight更改TouchableOpacity ,这不会发生

RN.50 +1

@Jarrio仍然立即在 android 上抛出错误

+1 0.47

+1

请停止+1 !!!

呃……加1,然后

+1

+1

+1 为 0.48.3

+1 在 0.51.0

+1 很好,喜欢。 发生 0.50

+1

+1

+1

使用本机 0.51.0

我通过在 Android 中手动设置设备时间来“修复”这个问题。 确保新时间与您的计算机时间相同(目标是下一分钟更改),在计算机时间将更改为下一分钟的同一秒确认时间更改。

+1

+1

+1

+1

+1

+1

我的解决方案是

  1. 确保手机和电脑有相同的时区
  2. 手动更新 PC 上的时间:日期和时间 -> Internet 时间选项卡 -> 更改设置 -> 更新时间
  3. 在 android 设置中打开自动时间更新,然后将其关闭
  4. 重新启动应用程序

+1

在 LibrariesComponentsTouchableTouchableHighlight.js 中替换

touchableGetLongPressDelayMS: function() {
返回 this.props.delayLongPress;
},

touchableGetLongPressDelayMS: function() {
返回 this.props.delayLongPress === 0 ? 0 :
this.props.delayLongPress || 500;
},

它为我解决了问题。

+1

+1

我在 Android 上遇到了同样的问题
a) 我的手机通过 USB 连接到我的电脑
b) 我通过网络使用了远程调试

断开 USB 连接解决了该问题。 不过不知道有没有因果关系。

编辑:在遇到异步超时的其他问题后,我通过以下方式检查了 PC 和 Android 设备上的当前时间

adb shell date && date

有 5 秒的差异。 人们可能会猜测,在远程调试时,RN 处理当前时间的方式存在不一致。
通过

curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g'

在我的案例中,我确定了罪魁祸首:我的 Android 设备的系统时间关闭了 5 秒。 重新启动 Android 设备修复了差异。

我刚刚验证了来自 Android 设备和我的 Mac 的时间: adb shell date && date 。 相差超过2分钟。 然后我在我的 Android 设备上激活了自动时间设置并再次运行相同的命令,瞧时间同步了,但时区不一样,即使在(Android 设备和 Mac)上时区设置都是自动的。 所以我在我的Android设备上停用了自动时区设置并手动将其设置为相应的错误消失了。

+1

+1

安卓设备自动时间设置和电脑自动时间设置解决了问题

在 Ubuntu 上,我通过执行以下操作将系统时间与当前 ADB 时间同步:

sudo date +%T -s `adb shell date +%T`

+1

+1

由于重复 +1 评论而锁定。 很久以前@Larry-Liu2016在这里发布了一个解决方案。 总之,检查设备上的时钟。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

janmonschke picture janmonschke  ·  3评论

phongyewtong picture phongyewtong  ·  3评论

despairblue picture despairblue  ·  3评论

axelg12 picture axelg12  ·  3评论

josev55 picture josev55  ·  3评论