나는 Android에서 React Native 0.29로 작업 중입니다. 내 앱의 특정보기/활동/화면에서 BackAndroid 버튼에 대한 이벤트 리스너를 추가하고 싶습니다.이 버튼은 반응 네이티브와 함께 사용할 수 있습니다. 메인 화면이 아닌 경우 스택에서 뷰를 튕겨내는 내 앱 (내 index.android.js 파일)에 이미 전역 BackAndroid 이벤트 리스너가 추가되었습니다.BackAndroid가 마운트 해제되지 않음 - React Native (Android)
이벤트 리스너는 componentDidMount()
라이프 사이클 메소드로 활성화되며 작동합니다. 그것은 글로벌 것을 오버라이드하고 예상대로 작동합니다. 이제 문제는 componentWillUnmount()
라이프 사이클 메소드가 실행될 때 제거되지 않는다는 것입니다. 따라서 특정 화면에서 돌아 왔을 때 이벤트 수신기가 여전히 남아있어 문제를 일으킬 수 있습니다. 여기 내가 한 일이 있습니다 :
componentDidMount() {
BackAndroid.addEventListener('backBtnPressed', this._handleBackBtnPress.bind(this))
}
componentWillUnmount() {
BackAndroid.removeEventListener('backBtnPressed', this._handleBackBtnPress.bind(this))
}
나는 그것이 작동하지 않는 이유를 모르겠다. 왜 작동하지 않는지 이해하고이 문제를 해결하기 위해 무엇을해야하는지 이해해주십시오.
또한 각 클래스 함수에 컨텍스트를 바인드하지 않아도되도록 우회하려면 큰 문제가 될 수 있으므로 [autobind-decorator] (https://github.com/andreypopp/autobind- 데코레이터)를 사용하여 컨텍스트를 바인딩합니다. 그것은 꽤 멋지다. – jasonmerino
@jasonmerino 감사합니다, 알지 못했습니다 .... –
예, 문제 없습니다. 우리 팀은 요 전날에 그것을 돌았고 코드를 잘 정리했습니다. – jasonmerino