Merge branch 'master' of https://github.com/react-native-community/react-native-webview into pr/296
This commit is contained in:
commit
e624067a1c
13
README.md
13
README.md
|
@ -11,7 +11,6 @@ _Garrett McCullough, mobile engineer at Virta Health_
|
|||
|
||||
- [x] iOS (both UIWebView and WKWebView)
|
||||
- [x] Android
|
||||
- [ ] Windows 10 (coming soon)
|
||||
|
||||
_Note: React Native WebView is not currently supported by Expo unless you "eject"._
|
||||
|
||||
|
@ -44,7 +43,6 @@ class MyWebComponent extends Component {
|
|||
<WebView
|
||||
source={{ uri: "https://infinite.red/react-native" }}
|
||||
style={{ marginTop: 20 }}
|
||||
onLoadProgress={e => console.log(e.nativeEvent.progress)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
@ -61,16 +59,9 @@ Simply install React Native WebView and then use it in place of the core WebView
|
|||
|
||||
- If you're getting `Invariant Violation: Native component for "RNCWKWebView does not exist"` it likely means you forgot to run `react-native link` or there was some error with the linking process
|
||||
|
||||
### Contributor Notes
|
||||
## Contributing
|
||||
|
||||
- I've removed all PropTypes for now. Instead, we'll be using Flow types. TypeScript types will be added at a later date.
|
||||
- UIWebView is not tested fully and you will encounter some yellow warning boxes. Since it is deprecated, we don't intend to put a lot of time into supporting it, but feel free to submit PRs if you have a special use case. Note that you will need to specify `useWebKit={false}` to use UIWebView
|
||||
- After pulling this repo and installing all dependencies, you can run flow on iOS and Android-specific files using the commands:
|
||||
- `yarn test:ios:flow` for iOS
|
||||
- `yarn test:android:flow` for Android
|
||||
- If you want to add another React Native platform to this repository, you will need to create another `.flowconfig` for it. If your platform is `example`, copy the main flowconfig and rename it to `.flowconfig.example`. Then edit the config to ignore other platforms, and add `.*/*[.]example.js` to the ignore lists of the other platforms. Then add an entry to `package.json` like this:
|
||||
- `"test:example:flow": "flow check --flowconfig-name .flowconfig.example"`
|
||||
- Currently you need to install React Native 0.57 to be able to test these types - `flow check` will not pass against 0.56.
|
||||
See [Contributing.md](https://github.com/react-native-community/react-native-webview/blob/master/docs/Contributing.md)
|
||||
|
||||
## Maintainers
|
||||
|
||||
|
|
|
@ -194,10 +194,19 @@ class WebView extends React.Component<WebViewSharedProps, State> {
|
|||
);
|
||||
}
|
||||
|
||||
getViewManagerConfig = (viewManagerName: string) => {
|
||||
if (!UIManager.getViewManagerConfig) {
|
||||
return UIManager[viewManagerName];
|
||||
}
|
||||
return UIManager.getViewManagerConfig(viewManagerName);
|
||||
};
|
||||
|
||||
getCommands = () => this.getViewManagerConfig('RNCWebView').Commands;
|
||||
|
||||
goForward = () => {
|
||||
UIManager.dispatchViewManagerCommand(
|
||||
this.getWebViewHandle(),
|
||||
UIManager.RNCWebView.Commands.goForward,
|
||||
this.getCommands().goForward,
|
||||
null,
|
||||
);
|
||||
};
|
||||
|
@ -205,7 +214,7 @@ class WebView extends React.Component<WebViewSharedProps, State> {
|
|||
goBack = () => {
|
||||
UIManager.dispatchViewManagerCommand(
|
||||
this.getWebViewHandle(),
|
||||
UIManager.RNCWebView.Commands.goBack,
|
||||
this.getCommands().goBack,
|
||||
null,
|
||||
);
|
||||
};
|
||||
|
@ -216,7 +225,7 @@ class WebView extends React.Component<WebViewSharedProps, State> {
|
|||
});
|
||||
UIManager.dispatchViewManagerCommand(
|
||||
this.getWebViewHandle(),
|
||||
UIManager.RNCWebView.Commands.reload,
|
||||
this.getCommands().reload,
|
||||
null,
|
||||
);
|
||||
};
|
||||
|
@ -224,7 +233,7 @@ class WebView extends React.Component<WebViewSharedProps, State> {
|
|||
stopLoading = () => {
|
||||
UIManager.dispatchViewManagerCommand(
|
||||
this.getWebViewHandle(),
|
||||
UIManager.RNCWebView.Commands.stopLoading,
|
||||
this.getCommands().stopLoading,
|
||||
null,
|
||||
);
|
||||
};
|
||||
|
@ -232,7 +241,7 @@ class WebView extends React.Component<WebViewSharedProps, State> {
|
|||
postMessage = (data: string) => {
|
||||
UIManager.dispatchViewManagerCommand(
|
||||
this.getWebViewHandle(),
|
||||
UIManager.RNCWebView.Commands.postMessage,
|
||||
this.getCommands().postMessage,
|
||||
[String(data)],
|
||||
);
|
||||
};
|
||||
|
@ -246,7 +255,7 @@ class WebView extends React.Component<WebViewSharedProps, State> {
|
|||
injectJavaScript = (data: string) => {
|
||||
UIManager.dispatchViewManagerCommand(
|
||||
this.getWebViewHandle(),
|
||||
UIManager.RNCWebView.Commands.injectJavaScript,
|
||||
this.getCommands().injectJavaScript,
|
||||
[data],
|
||||
);
|
||||
};
|
||||
|
@ -311,7 +320,7 @@ class WebView extends React.Component<WebViewSharedProps, State> {
|
|||
if (shouldStart) {
|
||||
UIManager.dispatchViewManagerCommand(
|
||||
this.getWebViewHandle(),
|
||||
UIManager.RNCWebView.Commands.loadUrl,
|
||||
this.getCommands().loadUrl,
|
||||
[String(url)],
|
||||
);
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ import type {
|
|||
} from './WebViewTypes';
|
||||
|
||||
const resolveAssetSource = Image.resolveAssetSource;
|
||||
|
||||
let didWarnAboutUIWebViewUsage = false;
|
||||
// Imported from https://github.com/facebook/react-native/blob/master/Libraries/Components/ScrollView/processDecelerationRate.js
|
||||
function processDecelerationRate(decelerationRate) {
|
||||
if (decelerationRate === 'normal') {
|
||||
|
@ -153,6 +153,13 @@ class WebView extends React.Component<WebViewSharedProps, State> {
|
|||
webViewRef = React.createRef();
|
||||
|
||||
UNSAFE_componentWillMount() {
|
||||
if (!this.props.useWebKit && !didWarnAboutUIWebViewUsage) {
|
||||
didWarnAboutUIWebViewUsage = true;
|
||||
console.warn(
|
||||
'UIWebView is deprecated and will be removed soon, please use WKWebView (do not override useWebkit={true} prop),' +
|
||||
' more infos here: https://github.com/react-native-community/react-native-webview/issues/312',
|
||||
);
|
||||
}
|
||||
if (
|
||||
this.props.useWebKit === true &&
|
||||
this.props.scalesPageToFit !== undefined
|
||||
|
@ -289,13 +296,17 @@ class WebView extends React.Component<WebViewSharedProps, State> {
|
|||
);
|
||||
}
|
||||
|
||||
_getCommands() {
|
||||
if (!this.props.useWebKit) {
|
||||
return UIManager.RNCUIWebView.Commands;
|
||||
_getViewManagerConfig = (viewManagerName: string) => {
|
||||
if (!UIManager.getViewManagerConfig) {
|
||||
return UIManager[viewManagerName];
|
||||
}
|
||||
return UIManager.getViewManagerConfig(viewManagerName);
|
||||
};
|
||||
|
||||
return UIManager.RNCWKWebView.Commands;
|
||||
}
|
||||
_getCommands = () =>
|
||||
!this.props.useWebKit
|
||||
? this._getViewManagerConfig('RNCUIWebView').Commands
|
||||
: this._getViewManagerConfig('RNCWKWebView').Commands;
|
||||
|
||||
/**
|
||||
* Go forward one page in the web view's history.
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
"Thibault Malbranche <malbranche.thibault@gmail.com>"
|
||||
],
|
||||
"license": "MIT",
|
||||
"version": "5.0.2",
|
||||
"version": "5.0.5",
|
||||
"homepage": "https://github.com/react-native-community/react-native-webview#readme",
|
||||
"scripts": {
|
||||
"test:js": "jest",
|
||||
|
@ -37,7 +37,7 @@
|
|||
"flow-bin": "^0.80.0",
|
||||
"jest": "^24.0.0",
|
||||
"metro-react-native-babel-preset": "^0.51.1",
|
||||
"react-native": "^0.57",
|
||||
"react-native": ">=0.57 <0.59",
|
||||
"semantic-release": "15.10.3"
|
||||
},
|
||||
"repository": {
|
||||
|
|
Loading…
Reference in New Issue