2017-09-22 3 views
1

사용자가 Android에서 뒤로 버튼을 누르면 되돌리려 고합니다.BackHandler가 제대로 작동하지 않음 React Native

나는 리모트 디버그 모드에있을 때 리스너를 화면에 추가했으며 이벤트를 수신하고있다. 하지만 원격으로 디버그를하지 않으면 제대로 작동하지 않습니다. 정말 이상합니다.

내가 작성한 코드 스 니펫을 첨부 할 예정입니다.

//Navigator 
const BoardNavigator = StackNavigator({ 
    Board: { screen: Board } 
}); 

//Board Component 
class Board extends Component { 
    componentWillMount() { 
     BackHandler.addEventListener('hardwareBackPress', this._onBackPressed); 
    } 

    componentWillUnmount() { 
     BackHandler.removeEventListener('hardwareBackPress', this._onBackPressed); 
    } 

    _onBackPressed() { 
     console.log('backPress'); 
     goBack(this.props.navigation); 
     return true; 
    } 

    onNext() { 
     this.props.navigation.navigate("Board", {content: ...}); 
    } 
} 

추가 정보 : 이 BoardNavigator은 rootNavigator (StackNavigator)의 중첩이다.

는 반응 : '16 .0.0의-alpha.12 '

반응 네이티브 "0.47.2"

+0

정확히 무엇이 잘못 되었나요? – Raymond

+0

BackHandler 문제라고 생각합니다. "원격 디버그 모드"에서 테스트 할 때 뒤로 버튼이 정확하게 작동합니다. 하지만 '원격 디버그 모드'가 아닌 테스트를하면 완전히 닫힙니다. –

답변

1

실제로 단지와 응용 프로그램을 닫습니다 버튼을 다시 제어하기위한 아래와 같은 backhandler 사용했습니다 2 즉시 누르십시오.

componentDidMount() { 
this._backPress = 0; 

BackHandler.addEventListener('backPress',() => { 
    setTimeout(() => { 
    this._backPress = 0; 
    }, 3000); 

    this._backPress += 1; 
    if (this._backPress <= 1) { 
    ToastAndroid.showWithGravity(strings.BACK_BUTTON_ALERT, ToastAndroid.SHORT, ToastAndroid.CENTER); 
    return true; 
    } 
    return false; 
}); 
+0

하지만 실제로, 내 응용 프로그램은 정말 이상하게 작동하고 있습니다. 내가 디버그 모드 (원격 디버그)에서 실행하면, 그것은 StackNavigator Back Action과 잘 작동하지만 정상 모드에서는 작동하지 않고 이벤트를 BackHandler 함수에 보내지 않고 닫는 중입니다. –

관련 문제