Hello world
' }} source={{ uri: 'file:///sdcard/some-local-file.html' }} }2、onLoad
在組件渲染時會觸發onLoad回調函數,傳遞事件對象event、document.readyState、uri三個參數。該事件只觸發一次,當所有的幀被加載完畢時,才會被觸發回調函數,下面是一個例子:
{
import React, { Component } from 'react';
import { WebView } from 'react-native';
export default class ExampleApp extends Component {
onLoad(event) {
console.log(event.nativeEvent)
}
render() {
return (
)
}
}
}
3、onMessage
在Webview中通過JavaScript的postMessage方法可以向RN發送消息。可以在組件中使用onMessage回調函數捕獲這些事件,并取得傳進的數據,下面是一個例子:
{
import React, { Component } from 'react';
import { WebView } from 'react-native';
export default class ExampleApp extends Component {
onMessage(event) {
console.log(event.nativeEvent.data)
}
render() {
return (
)
}
}
}
四、常見方法
除了屬性參數,WebView組件還支持一些方法,下面是一些常見的方法示例:
1、網頁加載方法
通過ref屬性獲取組件引用,然后調用navigate方法實現URL的跳轉。下面是一個例子:
{
import React, { Component } from 'react';
import { WebView } from 'react-native';
export default class ExampleApp extends Component {
webview = null;
runScript(){
if (this.webview){
this.webview.injectJavaScript('alert("This is Alert show!");')
}
}
render() {
return (
);
}
}
}
2、網頁注入JS方法
通過ref屬性獲取組件引用,然后調用injectJavaScript方法可以注入JS腳本到網頁中。下面是一個例子:
{
import React, { Component } from 'react';
import { WebView } from 'react-native';
export default class ExampleApp extends Component {
webview = null;
runScript(){
if (this.webview){
this.webview.injectJavaScript('alert("This is Alert show!");')
}
}
render() {
return (
);
}
}
}
3、網頁后退方法
通過ref屬性獲取組件引用,然后調用goBack方法實現網頁后退操作。下面是一個例子:
{
import React, { Component } from 'react';
import { WebView } from 'react-native';
export default class ExampleApp extends Component {
webview = null;
goBack(){
if (this.webview){
this.webview.goBack()
}
}
render() {
return (
);
}
}
}
五、總結
本文從介紹,使用方法,常見屬性參數,常見方法四個方面詳細闡述了RNWebview的使用,綜合各個方面的內容,我們可以在React Native應用中快速、輕松地展示各類web頁面內容,大大提高了React Native開發效率。