[RN-CheatSheet] Native module refresh

HYUNGU, KANG·2022년 4월 28일
1

React-Native-CheatSheet

목록 보기
5/17

앱을 Reload 하는 경우에는 JS컨텍스트가 초기화 된다.
하지만 Native 객체들은 초기화 되지 않아서, 새로운 fresh 한 상태로 만들기 위해서는
직접 수동으로 초기화 해주는 인터페이스를 구현해줘야 한다.

React-Native 내부에서 NativeModule.invalidate 라는 인터페이스에 의해서 초기화 로직은 호출되고
invalidate 는 각각 플랫폼에 맞는 인터페이스를 호출한다.

Android

class YourModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
    // deprecated, 하위호환 위해서 구현 필요
    override fun onCatalystInstanceDestroy() {
        super.onCatalystInstanceDestroy()
        // Reset module here
    }
    // onCatalystInstanceDestroy 를 구현했다면 invalidate 는 구현하지 않아도 된다.
    // 기본 동작이 onCatalystInstanceDestroy 를 호출하게 되어있다.
    override fun invalidate() {
        super.invalidate()
        onCatalystInstanceDestroy()
    }
}

iOS

- (void)invalidate {
   // Reset module here
}

참고: https://github.com/facebook/react-native/commit/18c8417290823e67e211bde241ae9dde27b72f17

profile
JavaScript, TypeScript and React-Native

0개의 댓글