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
shouldOverrideUrlLoading
which lets me hook into URL navigations. DispatchesonSomethingHappened
event 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
shouldStartLoadWithRequest
to hook into URL navigation. DispatchesonSomethingHappened
event 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
onSomethingHappened
view 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
RCTWebView
so we can expose (& call)shouldStartLoadWithRequest
from (the child-cass)RCTCustomWebView
. Not really important to this example, but good to note.
- Adding a category to