Maison >interface Web >js tutoriel >À propos de la communication entre React Native et WebView
WebView est un composant de ReactNative. Il peut créer une WebView native et peut être utilisé pour accéder à une page Web. Cet article présente principalement l'exemple de code pour la communication entre React Native et WebView. je le partagerai avec vous maintenant, également comme référence pour tout le monde. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.
Parfois, nous devons communiquer entre RN et WebView, ou transférer des données, ou envoyer des notifications de message. À ce stade, nous devons utiliser les connaissances suivantes.
<.>1 : WebView envoie des données à l'extrémité RN :
<WebView ref={'webview'} source={require('./index.html')} style={{width: 375, height: 220}} onMessage={(e) => { this.handleMessage(e) }} />Vous pouvez voir qu'il existe une méthode onMessage,
).
handleMessage(e) { this.setState({webViewData: e.nativeEvent.data}); }e.nativeEvent.data sont les données envoyées depuis la vue Web
var data = 0; function sendData(data) { if (window.originalPostMessage) { window.postMessage(data); } else { throw Error('postMessage接口还未注入'); } } document.getElementById('button').onclick = function () { data += 100; sendData(data); }window.postMessage consiste à envoyer des données à RN.
Deux : RN envoie des données à Webview :
sendMessage() { this.refs.webview.postMessage(++this.data); }Cette étape est très simple.
Écrivez simplement les données que vous souhaitez envoyer en tant que paramètre dans cette méthode.
window.onload = function () { document.addEventListener('message', function (e) { document.getElementById('data').textContent = e.data; }); }Cela peut réaliser la communication entre Rn et Webview Après
<!DOCTYPE html> <html lang="en"> <head> <title></title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <p style="text-align: center"> <button id="button">发送数据到react native</button> <p style="text-align: center">收到react native发送的数据: <span id="data"></span></p> </p> <script> var data = 0; function sendData(data) { if (window.originalPostMessage) { window.postMessage(data); } else { throw Error('postMessage接口还未注入'); } } window.onload = function () { document.addEventListener('message', function (e) { document.getElementById('data').textContent = e.data; }); document.getElementById('button').onclick = function () { data += 100; sendData(data); } } </script> </body> </html>web.js :
/** * Created by 卓原 on 2017/8/17. * zhuoyuan93@gmail.com */ import React from 'react'; import { View, Text, StyleSheet, WebView } from 'react-native'; export default class Web extends React.Component { constructor(props) { super(props); this.state = { webViewData: '' } this.data = 0; } sendMessage() { this.refs.webview.postMessage(++this.data); } handleMessage(e) { this.setState({webViewData: e.nativeEvent.data}); } render() { return ( <View style={styles.container}> <View style={{width: 375, height: 220}}> <WebView ref={'webview'} source={require('./index.html')} style={{width: 375, height: 220}} onMessage={(e) => { this.handleMessage(e) }} /> </View> <Text>来自webview的数据 : {this.state.webViewData}</Text> <Text onPress={() => { this.sendMessage() }}>发送数据到WebView</Text> </View> ) } } const styles = StyleSheet.create({ container: { flex: 1, marginTop: 22, backgroundColor: '#F5FCFF', }, });Recommandations associées :
JS clique de manière interactive sur l'image dans WKWebView et prévisualise l'exemple
Explication détaillée des points de connaissance WebView
Détaillé explication sur la façon de charger du code HTML à l'aide de WebView
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!