浏览代码

Merge pull request #74 from react-native-community/last-fixes-before-release

Last Fixes before release
Thibault Malbranche 6 年前
父节点
当前提交
02aa6e78cf
没有帐户链接到提交者的电子邮件
共有 5 个文件被更改,包括 42 次插入38 次删除
  1. 27
    25
      README.md
  2. 1
    1
      android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManager.java
  3. 7
    8
      js/WebView.ios.js
  4. 2
    2
      js/WebViewShared.js
  5. 5
    2
      package.json

+ 27
- 25
README.md 查看文件

@@ -2,20 +2,22 @@
2 2
 
3 3
 **React Native WebView** is a modern, well-supported, and cross-platform WebView for React Native. It is intended to be a replacement for the built-in WebView (which will be [removed from core](https://github.com/react-native-community/discussions-and-proposals/pull/3)).
4 4
 
5
-**Please note that this package is pre-release and not yet ready for production use.**
6
-
7 5
 ## Platforms Supported
8 6
 
9
-* [x] iOS (both UIWebView and WKWebView)
10
-* [x] Android
11
-* [ ] Windows 10 (coming soon)
7
+- [x] iOS (both UIWebView and WKWebView)
8
+- [x] Android
9
+- [ ] Windows 10 (coming soon)
12 10
 
13
-## Getting Started
11
+## Versionning
12
+
13
+If you need the exact same Webview as the one from react-native, please use version **2.0.0**.
14 14
 
15
-*Note: this is currently a work-in-progress and not yet published to NPM.*
15
+_This package will then follow semver rules for the next releases._
16
+
17
+## Getting Started
16 18
 
17 19
 ```
18
-$ npm install --save https://github.com/react-native-community/react-native-webview
20
+$ yarn add react-native-webview
19 21
 $ react-native link react-native-webview
20 22
 ```
21 23
 
@@ -26,19 +28,19 @@ Read our [Getting Started Guide](./docs/Getting-Started.md) for more.
26 28
 Import the `WebView` component from `react-native-webview` and use it like so:
27 29
 
28 30
 ```jsx
29
-import React, { Component } from 'react'
30
-import { StyleSheet, Text, View } from 'react-native'
31
-import { WebView } from 'react-native-webview'
31
+import React, { Component } from 'react';
32
+import { StyleSheet, Text, View } from 'react-native';
33
+import { WebView } from 'react-native-webview';
32 34
 
33 35
 // ...
34 36
 class MyWebComponent extends Component {
35
-  render () {
37
+  render() {
36 38
     return (
37 39
       <WebView
38
-        source={{uri: "https://infinite.red/react-native"}}
39
-        style={{marginTop: 20}}
40
+        source={{ uri: 'https://infinite.red/react-native' }}
41
+        style={{ marginTop: 20 }}
40 42
       />
41
-    )
43
+    );
42 44
   }
43 45
 }
44 46
 ```
@@ -51,19 +53,19 @@ Simply install React Native WebView and then use it in place of the core WebView
51 53
 
52 54
 ### Contributor Notes
53 55
 
54
-* I've removed all PropTypes for now. Instead, we'll be using Flow types. TypeScript types will be added at a later date.
55
-* 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
56
-* After pulling this repo and installing all dependencies, you can run flow on iOS and Android-specific files using the commands:
57
-  * `yarn flow` or `npm run flow` for iOS
58
-  * `yarn flow-android` or `npm run flow-android` for Android
59
-* 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:
60
-  * `    "flow-example": "flow check --flowconfig-name .flowconfig.example"`
61
-* Currently you need to install React Native 0.57 to be able to test these types - `flow check` will not pass against 0.56.
56
+- I've removed all PropTypes for now. Instead, we'll be using Flow types. TypeScript types will be added at a later date.
57
+- 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
58
+- After pulling this repo and installing all dependencies, you can run flow on iOS and Android-specific files using the commands:
59
+  - `yarn flow` or `npm run flow` for iOS
60
+  - `yarn flow-android` or `npm run flow-android` for Android
61
+- 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:
62
+  - `"flow-example": "flow check --flowconfig-name .flowconfig.example"`
63
+- Currently you need to install React Native 0.57 to be able to test these types - `flow check` will not pass against 0.56.
62 64
 
63 65
 ## Maintainers
64 66
 
65
-* [Jamon Holmgren](https://github.com/jamonholmgren) ([Twitter @jamonholmgren](https://twitter.com/jamonholmgren)) from [Infinite Red](https://infinite.red/react-native)
66
-* [Thibault Malbranche](https://github.com/Titozzz) ([Twitter @titozzz](https://twitter.com/titozzz)) from [Brigad](https://brigad.co/about)
67
+- [Jamon Holmgren](https://github.com/jamonholmgren) ([Twitter @jamonholmgren](https://twitter.com/jamonholmgren)) from [Infinite Red](https://infinite.red/react-native)
68
+- [Thibault Malbranche](https://github.com/Titozzz) ([Twitter @titozzz](https://twitter.com/titozzz)) from [Brigad](https://brigad.co/about)
67 69
 
68 70
 ## License
69 71
 

+ 1
- 1
android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManager.java 查看文件

@@ -518,7 +518,7 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
518 518
         }
519 519
         if (source.hasKey("method")) {
520 520
           String method = source.getString("method");
521
-          if (method.equals(HTTP_METHOD_POST)) {
521
+          if (method.equalsIgnoreCase(HTTP_METHOD_POST)) {
522 522
             byte[] postData = null;
523 523
             if (source.hasKey("body")) {
524 524
               String body = source.getString("body");

+ 7
- 8
js/WebView.ios.js 查看文件

@@ -8,11 +8,7 @@
8 8
  * @flow
9 9
  */
10 10
 
11
-'use strict';
12
-
13 11
 import React from 'react';
14
-
15
-import ReactNative from 'react-native'
16 12
 import {
17 13
   ActivityIndicator,
18 14
   Linking,
@@ -22,7 +18,8 @@ import {
22 18
   View,
23 19
   requireNativeComponent,
24 20
   NativeModules,
25
-  Image
21
+  Image,
22
+  findNodeHandle,
26 23
 } from 'react-native';
27 24
 
28 25
 import invariant from 'fbjs/lib/invariant';
@@ -136,7 +133,9 @@ class WebView extends React.Component<WebViewSharedProps, State> {
136 133
   };
137 134
 
138 135
   state = {
139
-    viewState: this.props.startInLoadingState ? WebViewState.LOADING : WebViewState.IDLE,
136
+    viewState: this.props.startInLoadingState
137
+      ? WebViewState.LOADING
138
+      : WebViewState.IDLE,
140 139
     lastErrorEvent: null,
141 140
   };
142 141
 
@@ -203,7 +202,7 @@ class WebView extends React.Component<WebViewSharedProps, State> {
203 202
       'about:blank',
204 203
       ...(this.props.originWhitelist || []),
205 204
     ].map(WebViewShared.originWhitelistToRegex);
206
-    const onShouldStartLoadWithRequest = (event) => {
205
+    const onShouldStartLoadWithRequest = event => {
207 206
       let shouldStart = true;
208 207
       const { url } = event.nativeEvent;
209 208
       const origin = WebViewShared.extractOrigin(url);
@@ -384,7 +383,7 @@ class WebView extends React.Component<WebViewSharedProps, State> {
384 383
    * Returns the native `WebView` node.
385 384
    */
386 385
   getWebViewHandle = () => {
387
-    return ReactNative.findNodeHandle(this.webViewRef.current);
386
+    return findNodeHandle(this.webViewRef.current);
388 387
   };
389 388
 
390 389
   _onLoadingStart = (event: WebViewNavigationEvent) => {

+ 2
- 2
js/WebViewShared.js 查看文件

@@ -14,11 +14,11 @@ const escapeStringRegexp = require('escape-string-regexp');
14 14
 
15 15
 const WebViewShared = {
16 16
   defaultOriginWhitelist: ['http://*', 'https://*'],
17
-  extractOrigin: (url: string) => {
17
+  extractOrigin: (url: string): string => {
18 18
     const result = /^[A-Za-z0-9]+:(\/\/)?[^/]*/.exec(url);
19 19
     return result === null ? '' : result[0];
20 20
   },
21
-  originWhitelistToRegex: (originWhitelist: string) => {
21
+  originWhitelistToRegex: (originWhitelist: string): string => {
22 22
     return escapeStringRegexp(originWhitelist).replace(/\\\*/g, '.*');
23 23
   },
24 24
 };

+ 5
- 2
package.json 查看文件

@@ -1,9 +1,12 @@
1 1
 {
2 2
   "name": "react-native-webview",
3
-  "description": "React Native WebView component for iOS, Android, and Windows 10",
3
+  "description": "React Native WebView component for iOS, Android, and Windows 10 (coming soon)",
4 4
   "main": "index.js",
5 5
   "author": "Jamon Holmgren <jamon@infinite.red>",
6
-  "version": "0.1.0",
6
+  "contributors": [
7
+    "Thibault Malbranche <malbranche.thibault@gmail.com>"
8
+  ],
9
+  "version": "2.0.0",
7 10
   "homepage": "https://github.com/react-native-community/react-native-webview#readme",
8 11
   "scripts": {
9 12
     "flow": "flow check",