2016-11-09 88 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> 
); 
}