2017-03-28 1 views
1

씬 내에서 사이드 메뉴에 액세스 한 후 네비게이터의 왼쪽 팝 제스처에서 스 와이프를 비활성화하고 싶습니다. 장면을 처음 렌더링 할 때 사이드 메뉴가 열려있을 때만 비활성화하는 것을 원하지 않습니다. 전화 할 수있는 onOpen 함수가 있지만 프로그래밍 방식으로 탐색 경로를 변경하지 않고 탐색 동작을 변경하는 방법을 알지 못합니다.네이티브 네비게이터 반응 : 사용자 동작 후에 장면에서 네비게이션 동작을 제거 할 수 있습니까?

아이디어

답변

1

을 감상 할 수있다 나는 당신이 할 수있는 생각 configureScene={() => { return this.state.swipeBackNavigation ? FloatFromRight : Navigator.SceneConfigs.FloatFromRight; }

과 상태를 변경하지만, 구성 요소가 없습니다 다시 쓰게 수행합니다

는이 같은 네비게이터의 configureScene 소품을 설정하려 단지 세트 제스처 (효과적으로 해제)를 null로 :

gestures: {}

나는 현재이 테스트 할 수 없습니다,하지만 (내가 어딘가에 몇 가지 구문을 망치지 않은 경우) 나는 그것이 작동 생각 : 당신이 원하는 때마다

export default class Foo extends Component { 
    constructor(props){ 
    super(props); 
     this.state = { 
     //initialize gestureChoice 
     gestureChoice: {}, 
     } 
    } 

    disablePop(){ 
    setState({ gestureChoice:{ gestures:{} } }); 
    } 
    enablePop(){ 
    setState({gestureChoice: ...Navigator.SceneConfigs.FloatFromRight}); 
    } 

    render(){ 
    return(
     <Navigator 
     renderScene={(route, navigator) => 
      return <SomeScene navigator={navigator} {...route.passprops} /> 
     } 
     configureScene={(route, routeStack) => 
      this.state.gestureChoice; 
     )} 
     /> 
    ); 
    } 
} 

아이디어의 존재, 당신은 enablePop()disablePop()을 사용할 수 있습니다 . 답에 대한 https://github.com/facebook/react-native/issues/1014

+1

감사합니다,하지만 난 이미 시도 :

이 스레드

아마 도움이됩니다. 이는 제스처를 제거하지만 새로운 경로가 네비게이터에 푸시 된 후에 만 ​​효과가 있습니다. 새로운 경로를 선택하지 않고도 사용할 수 없게하는 기능이 필요했습니다. 동일한 경로에 머무르는 동안 탐색기 구성을 다시로드 할 수있는 방법이 있다면 –