Example for PR facebook/react-native#10946 (comment)
Important files
Javascript implementation:
Usage from JS:
Android implementation:
- CustomWebViewManager.java
- This file contains all the logic for the custom webview. In this case all I do is extend the ReactWebViewClient and override
shouldOverrideUrlLoadingwhich lets me hook into URL navigations. DispatchesonSomethingHappenedevent if URL contains a certain string.
- This file contains all the logic for the custom webview. In this case all I do is extend the ReactWebViewClient and override
- CustomWebViewManagerPackager.java
- The packager-class, used in MainApplication to hook up the above ViewManager to the app.
iOS implementation:
- RCTCustomWebView.h
- Header-file for the webview
- RCTCustomWebView.m
- Same logic as Android. Overriding
shouldStartLoadWithRequestto hook into URL navigation. DispatchesonSomethingHappenedevent if URL contains a certain string.
- Same logic as Android. Overriding
- RCTCustomWebViewManager.h
- Header-file for view manager
- RCTCustomWebViewManager.m
- This is basically a copy-paste of RN's RCTWebViewManager. The only differences (noted in the file comments) is:
- Imports at the top
- The WebView returned (have to use the custom RCTCustomWebView of course)
- We also have to export the
onSomethingHappenedview property
- This is basically a copy-paste of RN's RCTWebViewManager. The only differences (noted in the file comments) is:
- RCTWebView+Custom.h
- Adding a category to
RCTWebViewso we can expose (& call)shouldStartLoadWithRequestfrom (the child-cass)RCTCustomWebView. Not really important to this example, but good to note.
- Adding a category to