错误:HostFunction中的异常:来自JS的格式错误的调用:字段大小不同。在动画视图中

时间:2019-06-28 11:53:28

标签: javascript react-native

我不能粘贴与该问题相关的600余行代码,但实质上是平移响应器正在控制一个Animated View,并按一定的时间间隔将其重置以创建一种无限滚动。

该代码可以完美编译并运行,并且可以按预期运行。但是有时候,上面的错误是用小的手势抛出的(几乎就像敲击一样),而我认为子组件是与翻译转换有关的不匹配视图。

我知道这是一个复杂的问题,很难确定。我正在寻找有关在什么情况下会导致上述错误的讨论,以便更好地跟踪我的问题。谢谢!

4 个答案:

答案 0 :(得分:1)

我最终解决了这个问题。导致此问题的原因是,panResponder上的moveY变量何时超出代码中其他位置设置的阈值。这导致将translateY设置为NaN,从而引发了上述错误。我认为上述错误是由于道具不匹配引起的。

  1. 如果其他人遇到此问题,我的建议是确定遇到不匹配的特定组件。
  2. 隔离道具并确保正确解析每个道具(尤其是在动画翻译转换中)
  3. 跟踪负责的道具,并调整该道具专用的逻辑,以避免传递NaN和未定义。

答案 1 :(得分:0)

当我错误地将闭包作为第二个参数传递给AsyncStorage而不是我需要存储的字符串文字时,出现了此错误

AsyncStorage.setItem('loggedIn', (err, result) => {
      console.log('I am logged In');
});

正确的做法是

AsyncStorage.setItem('loggedIn', 'my-jwt-token', (err, result) => {
      console.log('I am logged In');
});

答案 2 :(得分:0)

我面临类似的问题,并通过将宽松值从弹性更改为其他方法来解决。是的很奇怪,但是解决了这个问题,以防万一它可能对某人有所帮助。

 Animated.timing(height, {
  toValue: 500,
  duration: 1500,
  easing: Easing.elastic,
}).start();

 Animated.timing(height, {
  toValue: 500,
  duration: 1500,
  easing: Easing.linear,
}).start();

答案 3 :(得分:0)

我的问题是我自己使用了Easing.inOut却没有在内部传递另一个宽松函数,例如Easing.inOut(Easing.elastic(1))。我以为Easing.inOut本身就是一种轻松,但实际上只是使传递给它的所有缓动函数对称。 Easing.inEasing.out类似地使传递给它们的内容都向前或向后运行。参见https://reactnative.dev/docs/easing