RN:使用react-native-webview渲染h5页面、渲染html,并设置自适应高度
2023-09-27 14:27:09 时间
安装
yarn add react-native-webview
渲染h5
import React, { Component } from 'react';
import { WebView } from 'react-native-webview';
class MyWeb extends Component {
render() {
return (
<View style={{ flex: 1 }}>
<WebView
source={{ uri: 'https://infinite.red' }}
style={{ marginTop: 20 }}
/>
</View>
);
}
}
渲染html
import React, { Component } from 'react';
import { WebView } from 'react-native-webview';
class MyInlineWeb extends Component {
render() {
return (
<View style={{ flex: 1 }}>
<WebView
originWhitelist={['*']}
source={{ html: '<h1>Hello world</h1>' }}
/>
</View>
);
}
}
获取web-view高度
上面可以看到,web view必须父元素设置 flex: 1,也就是设置高度,webview内容才能展示出来,我们如果webview底下还有别的元素,那么就得根据 webview 的内容来设置高度了。
我们要用到一个库 https://github.com/iou90/react-native-autoheight-webview
试了下网上其他方案都不太好使,这个库也一般,凑活用,大家有什么好的建议可以说一下
app h5通信
const INJECTED_JAVASCRIPT = `(function(){
window.localStorage.setItem('x-u-token', '${status.token || ''}');
})();`;
<WebView
scalesPageToFit={false}
javaScriptEnabled={true}
decelerationRate="normal"
startInLoadingState={true}
// 发送消息给h5
injectedJavaScriptBeforeContentLoaded={INJECTED_JAVASCRIPT}
source={{
uri: url
}}
bounces={false}
scrollEnabled={true}
automaticallyAdjustContentInsets={true}
// 接受h5的消息
onMessage={(event) => {
console.log('onMessage===', event.nativeEvent.data);
const data = event && event.nativeEvent && event.nativeEvent.data;
if (data) {
const message = JSON.parse(data);
if (message.needLogin) {
certificate.showLoginDialog();
}
}
}}
></WebView>
h5发消息给app
if (window.ReactNativeWebView) {
window.ReactNativeWebView.postMessage(JSON.stringify({
needLogin:true
}));
} else {
// 去登录
}
参考文档
https://github.com/react-native-webview/react-native-webview/blob/master/docs/Getting-Started.md
全部API
相关文章
- h5 录音 自动生成proto Js语句 UglifyJS-- 对你的js做了什么 【原码笔记】-- protobuf.js 与 Long.js 【微信开发】-- 发送模板消息 能编程与会编程 vue2入坑随记(二) -- 自定义动态组件 微信上传图片
- Vue - H5 生成带二维码和文案的宣传海报(可自定义二维码扫描后的内容、海报背景图、文案文字、宽高间距等)用 HTML 写可 DIY 的海报,做完后转为图片供用户保存和转发下载
- uni-app - App 平台内嵌网页物理手机自带返回键失效解决方案(内嵌的 webview 网页 H5 打包后手机物理返回键无效直接退出应用了)
- Vue.js / Nuxt.js / uni-app - 移动端 H5 网页,在电脑 PC 上打开时居中显示(手机网页在电脑上打开后,简单粗暴防止 “界面样式“ 拉伸变形的解决方案)适用所有web项目
- uni-app webview H5页面跳转小程序页面 各种方法;包括 postMessage可以触发,但绑定的message方法不触发问题
- 纯H5 AJAX文件上传加进度条功能
- web组件发消息给H5页面时报错
- H5 2次重定向301
- HTML5_嵌套移动APP端的H5页面meta标签
- H5调用本地摄像头[转]
- 【快应用】打开一个H5页面,能修改标题吗?
- 【 H5踩坑 】Dom变更引起的 touchend 不触发
- VSCode 快速创建H5并调试