ให้ติดตั้งไลบรารีในโปรเจกต์ React Native ของคุณ:
npm install --save react-native-webview
หมายเหตุ:
react-native link
AndroidManifest.xml
android/app/src/main/AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
minSdkVersion
ใน android/build.gradle
เป็น 21 หรือสูงกว่า:defaultConfig {
minSdkVersion = 21
}
หลังจากติดตั้ง WebView ให้รันคำสั่งในโฟลเดอร์ iOS:
cd ios
pod install
ios/ชื่อโปรเจกต์/Info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
โค้ดด้านล่างสามารถใช้งานได้ทั้งสองแพลตฟอร์ม:
import React from 'react';
import { StyleSheet, View, ActivityIndicator } from 'react-native';
import { WebView } from 'react-native-webview';
const MyWebView = () => {
const LoadingIndicatorView = () => (
<ActivityIndicator
color="#00ff00"
size="large"
style={styles.loadingIndicator}
/>
);
return (
<View style={styles.container}>
<WebView
source={{ uri: 'https://www.matumweb.com/' }}
startInLoadingState={true} // แสดง Loader ขณะกำลังโหลด
renderLoading={LoadingIndicatorView}
javaScriptEnabled={true} // เปิดใช้งาน JavaScript
domStorageEnabled={true} // เปิดใช้งาน DOM Storage
/>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
},
loadingIndicator: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
});
export default MyWebView;
คุณสามารถสื่อสารระหว่าง WebView กับ Native Code ได้โดยใช้ Props อย่าง onMessage
และ injectedJavaScript
:
<WebView
source={{ uri: 'https://www.example.com/' }}
javaScriptEnabled={true}
injectedJavaScript={`window.ReactNativeWebView.postMessage("Hello from WebView!");`}
onMessage={(event) => {
alert(event.nativeEvent.data); // รับข้อความจาก WebView
}}
/>
หากต้องการเปิดลิงก์ภายนอกในเบราว์เซอร์ของอุปกรณ์แทน WebView:
import { Linking } from 'react-native';
<WebView
source={{ uri: 'https://www.matumweb.com/' }}
onShouldStartLoadWithRequest={(request) => {
if (!request.url.startsWith('https://www.matumweb.com')) {
Linking.openURL(request.url); // เปิดลิงก์ภายนอกในเบราว์เซอร์
return false;
}
return true;
}}
/>
16 December 2024
21 November 2024
25 September 2021
23 September 2021
23 September 2021
26 March 2020
19 January 2020
© 2018 Matumweb.com | Template by Inovatik