React Native 原生RN嵌套webView,并自适应高度
来源:互联网 发布:软件怎么申请专利 编辑:程序博客网 时间:2024/05/22 01:56
封装自适应高度的webView
import React, { Component } from 'react';import { Text, WebView, ScrollView, PixelRatio, View, Platform, ActivityIndicator,} from 'react-native';let thisWebView=null;export default class WebViewAutoheight extends Component { constructor(e){ super(e); this.state={ defWebViewHeight:0, } } pxToDp(px) { return px; } _onLoadEnd(){ const script = `window.postMessage(document.body.scrollHeight)`; thisWebView && thisWebView.injectJavaScript(script); } _onMessage (e) { let valToInt= parseInt(e.nativeEvent.data); let defWebViewHeight=this.pxToDp(valToInt); if(defWebViewHeight != this.state.defWebViewHeight) this.setState({defWebViewHeight}); } //注入html代码让h5调用 _getInjectedJavaScript(){ const patchPostMessageFunction = ()=> { let originalPostMessage = window.postMessage; let patchedPostMessage = (message, targetOrigin, transfer)=> { originalPostMessage(message, targetOrigin, transfer); }; patchedPostMessage.toString =()=> { return String(Object.hasOwnProperty).replace('hasOwnProperty', 'postMessage'); }; window.postMessage = patchedPostMessage; }; return '(' + String(patchPostMessageFunction) + ')();'; } renderLoadingView(){ if(this.state.defWebViewHeight == 0){ return ( <View style={{ alignItems:"center"}}> <ActivityIndicator animating={true} style={{height: 80,width:80, }} size="large" /> </View> ) } } renderAutoHeightWebView(){ return( <View style={{ height: this.state.defWebViewHeight,}}> <WebView ref={webview => thisWebView = webview} injectedJavaScript={this._getInjectedJavaScript()} onLoadEnd={this._onLoadEnd} onMessage={this._onMessage.bind(this)} scrollEnabled={false} {...this.props} /> </View> ) } render() { return ( <ScrollView> {this.renderLoadingView()} {this.renderAutoHeightWebView()} </ScrollView> ); }}
使用场景
import React, { Component } from 'react';import { StyleSheet, View, Dimensions, Text} from 'react-native';const { width, height } = Dimensions.get('window');import WebViewAutoHeight from './WebViewAutoheight'const HTML = ` <!DOCTYPEhtml>\n <html> <head> <title>HTML字符串</title> <metahttp-equivmetahttp-equiv="content-type" content="text/html;charset=utf-8"> <meta name="viewport"content="width=320, user-scalable=no"> <style type="text/css"> body { margin: 0; padding: 0; font: 40% arial, sans-serif; background: #FFF; padding: 10px; } </style> </head> <body> <p><br>红缨子高粱,俗称小红梁,是赤水河流域特产的一种有机糯高粱。它是茅台镇酱香型白酒的关键酿酒原料。因不同于其他高粱,粒小、皮厚、坚实、饱满,红缨子高粱被形象称为“沙”。<br><br><br><img src="https://zn-image.oss-cn-shenzhen.aliyuncs.com/supplychain-dev/test/articleEdit/PhbM5hiSHF.jpg" style="max-width:100%;"><br>茅台酒所代表的酱香酒,有三个独特工艺特点,都与红缨子高粱有关。<br><br><br>第一, 茅台酒两次投料,其他白酒一年四季都在投料,两次投料即指红缨子高粱,谓之“下沙”。<br><br>第二, 茅台酒生产周期历时一年,七次精酿,只有红缨子高粱才能历经九次蒸煮,谓之“回沙”。<br><br>第三,茅台酒是整粒高粱参与发酵,约20%破碎率,此类传统工艺的酱香酒,谓之“坤沙”(整粒之意)。<br><br>红缨子高粱单宁含量约1.61%,总淀粉含量65%以上,支链淀粉含量占总淀粉含量的88%~93%。<br><img src="https://zn-image.oss-cn-shenzhen.aliyuncs.com/supplychain-dev/test/articleEdit/PkAb7NiBfH.jpg" style="max-width:100%;"><br>红缨子高粱支链淀粉含量高,其截面呈玻璃质地状,十分有利于回沙工艺的多轮次翻烤,使茅台镇酱香型白酒每一轮的营养消耗有一合理范围。支链淀粉(amylopection)又称胶淀粉,分子相对较大,一般由几千个葡萄糖残基组成。支链淀粉加热糊化后,分子中的链较为松散,因此具有较高的粘度。<br><br>红缨子高粱单宁含量适中(1.5%-2.0%),通过传统酱香工艺发酵形成茅台酒特有的芳香类风味物质。这些物质的形成与当地高粱原料及特殊的地域微生物群系密切相关。也是茅台酒幽雅细腻、回味悠长的重要因素。<br>至于为何要两次投料,季克良曾解释说:是顺应了自然条件设计出来的,因为贵州是山区,山上的粮食要迟一点成熟,山下的粮食,河谷地带的要早成熟,所以早成熟的部分我们先投下去,然后山上成熟了第二次投料。<br><img src="https://zn-image.oss-cn-shenzhen.aliyuncs.com/supplychain-dev/test/articleEdit/s42CrmRRfP.jpg" style="max-width:100%;"><br>红缨子高粱有着独特的“谦卑”气质,相对其他高粱的“牛气冲天”,它总是保持微微弯腰低头,像儒家文化的谦谦君子。厚德载物,方为君子,一瓶茅台酒历时一年生产、七次精酿、三年贮存、五年出厂。这五年的坚守,如果换算成工作时间,足足有一万小时,这恰似人生的奋斗历程。茅台酒见证了历史的重要时刻,也见证着人生的重要时刻。茅台酒伴随着百年民族复兴,茅台酒也伴随着人生的涅槃成长。<br><br>红缨子高粱所带来的独特气质,造就了茅台酒的独特气质。当我们打开一瓶茅台酒,如兰花之香,香而不艳,幽雅细腻。茅台酒决无添加,却富含1000种香味香气物质,是世界上香味香气物质最为丰富丰满的酒品之一。闻香丰富、口感丰满、回味悠长、留香持久,构成了茅台酒独特的产品</p> </body> </html> `;const html = '<p><br>红缨子高粱,俗称小红梁,是赤水河流域特产的一种有机糯高粱。它是茅台镇酱香型白酒的关键酿酒原料。因不同于其他高粱,粒小、皮厚、坚实、饱满,红缨子高粱被形象称为“沙”。<br><br><br><img src="https://zn-image.oss-cn-shenzhen.aliyuncs.com/supplychain-dev/test/articleEdit/PhbM5hiSHF.jpg" style="max-width:100%;"><br>茅台酒所代表的酱香酒,有三个独特工艺特点,都与红缨子高粱有关。<br><br><br>第一, 茅台酒两次投料,其他白酒一年四季都在投料,两次投料即指红缨子高粱,谓之“下沙”。<br><br>第二, 茅台酒生产周期历时一年,七次精酿,只有红缨子高粱才能历经九次蒸煮,谓之“回沙”。<br><br>第三,茅台酒是整粒高粱参与发酵,约20%破碎率,此类传统工艺的酱香酒,谓之“坤沙”(整粒之意)。<br><br>红缨子高粱单宁含量约1.61%,总淀粉含量65%以上,支链淀粉含量占总淀粉含量的88%~93%。<br><img src="https://zn-image.oss-cn-shenzhen.aliyuncs.com/supplychain-dev/test/articleEdit/PkAb7NiBfH.jpg" style="max-width:100%;"><br>红缨子高粱支链淀粉含量高,其截面呈玻璃质地状,十分有利于回沙工艺的多轮次翻烤,使茅台镇酱香型白酒每一轮的营养消耗有一合理范围。支链淀粉(amylopection)又称胶淀粉,分子相对较大,一般由几千个葡萄糖残基组成。支链淀粉加热糊化后,分子中的链较为松散,因此具有较高的粘度。<br><br>红缨子高粱单宁含量适中(1.5%-2.0%),通过传统酱香工艺发酵形成茅台酒特有的芳香类风味物质。这些物质的形成与当地高粱原料及特殊的地域微生物群系密切相关。也是茅台酒幽雅细腻、回味悠长的重要因素。<br>至于为何要两次投料,季克良曾解释说:是顺应了自然条件设计出来的,因为贵州是山区,山上的粮食要迟一点成熟,山下的粮食,河谷地带的要早成熟,所以早成熟的部分我们先投下去,然后山上成熟了第二次投料。<br><img src="https://zn-image.oss-cn-shenzhen.aliyuncs.com/supplychain-dev/test/articleEdit/s42CrmRRfP.jpg" style="max-width:100%;"><br>红缨子高粱有着独特的“谦卑”气质,相对其他高粱的“牛气冲天”,它总是保持微微弯腰低头,像儒家文化的谦谦君子。厚德载物,方为君子,一瓶茅台酒历时一年生产、七次精酿、三年贮存、五年出厂。这五年的坚守,如果换算成工作时间,足足有一万小时,这恰似人生的奋斗历程。茅台酒见证了历史的重要时刻,也见证着人生的重要时刻。茅台酒伴随着百年民族复兴,茅台酒也伴随着人生的涅槃成长。<br><br>红缨子高粱所带来的独特气质,造就了茅台酒的独特气质。当我们打开一瓶茅台酒,如兰花之香,香而不艳,幽雅细腻。茅台酒决无添加,却富含1000种香味香气物质,是世界上香味香气物质最为丰富丰满的酒品之一。闻香丰富、口感丰满、回味悠长、留香持久,构成了茅台酒独特的产品</p>'//模块声名并导出export default class extends React.Component { //渲染 render() { return ( <View style={{flex:1}}> <View style={{height: 64, width:width, justifyContent:'center', alignItems:'center'}}> <Text>测试webView适配高度</Text> </View> <WebViewAutoHeight style={{backgroundColor:'#FFF',flex:1}} source={{html:html}} // 可以接受本地的HTML, 也可以单纯接受网络请求下来的html字符串,带标签,默认字体丑爆而已... domStorageEnabled={true} javaScriptEnabled={true} > </WebViewAutoHeight> <View style={{height: 49, width:width, justifyContent:'center', alignItems:'center'}}> <Text>测试webView适配高度</Text> </View> </View> ); }};
效果展示:
阅读全文
0 0
- React Native 原生RN嵌套webView,并自适应高度
- React Native WebView自适应高度(Android、IOS平台通用)
- react-native的原生传参到rn
- React Native 嵌入原生项目混合开发-自定义RN Activity
- react native之原生和RN的交互
- 《React-Native系列》29、 RN组件之WebView
- 《React-Native系列》29、 RN组件之WebView
- IOS TableViewCell嵌套webview 自适应高度
- cell中嵌套webview自适应高度
- React-Native WebView 测量网页高度
- WebView自适应并嵌套在ScrollView里
- React Native-----RN----React Native介绍
- android scollview嵌套webview底部空白,高度无法自适应解决
- android ScollView 嵌套 WebView 底部空白,高度无法自适应解决
- React-Native 原生跳转不同的RN界面的实现思路
- React Native学习笔记之--向原生应用中集成RN页面
- IOS与React Native混编,将RN框架使用CocoaPods集成到原生项目中
- React Native 嵌入原生项目混合开发-多个RN Activity
- 读要闻 | 8月中国经济全面不及预期 “滞胀”的脚步越来越近?
- mysql的常用命令
- File类常用方法
- JavaScript基础之Chaining
- python文件操作详解
- React Native 原生RN嵌套webView,并自适应高度
- 机器学习-->集成学习-->Bagging,Boosting,Stacking
- final finalize finally的区别
- iOS 使用MBProgressHUD,显示时禁止用户交互方法
- html——jQuery练习题1
- HDU-5934 Bomb(强连通分量缩点)
- 解决Request method 'GET' not supported问题
- 【Socket编程】Tcp连接中accept生成新socket与监听socket的区别
- linux下ADC驱动(AD7606)