2016-11-09 89 views
0

我试图玩不同的位置回调,但没有符合我的需求。反应原生:如何聆听元件位置?

  • onLayout不更新
  • 措施()与setInterval的太重
  • onPanResponderMove块子手势

我想导航过渡期间获取的场景组成的地位。

更确切地说,这是一个样本:https://rnplay.org/apps/53SXZg。如何检索拖动的场景位置?

+0

如果您正在使用'Animated',您不能在事件侦听器添加到该值时更改吗? https://facebook.github.io/react-native/docs/animated.html#addlistener – jered

+0

谢谢,我使用经典的Navigator.SceneConfigs和自定义的手势来拖动/滑动场景。我需要检索拖动中的场景位置。我发现的唯一方法是测量()它和父组件上的回调。使用setInterval并且它太耗费和肮脏。我不知道我怎么可以添加一个监听器(与动画,但在哪里?)。这篇文章(http://stackoverflow.com/questions/37350129/react-native-navigationexperimental-animations)讨论NavigatorExperimental上的进度道具,但我很难理解它,并不确定它会回调位置...... – sebap

回答

0

找到它使用NavigationTransitionnerNavigatorExperimental。谢谢你。倾听transitionProps.position AnimatedValue:

_render(transitionProps: NavigationTransitionProps,): React.Element<any> { 
    const scenes = transitionProps.scenes.map((scene) => { 
    const sceneProps = { 
     ...transitionProps, 
     scene, 
    }; 
    return this._renderScene(sceneProps); 
    }); 

    // Add position listener 
    if(!this.positionListener){ 
    this.positionListener = transitionProps.position.addListener(({value}) => { 
    console.log('value', value); 
    }); 
    } 

    return (
    <View style={styles.navigator}> 
     {scenes} 
    </View> 
); 
}