React Native开发鸿蒙Next---富文本浏览

最近在继续开发App剩余的社区功能。地铁的社区相对较为特殊,只有公告/政策规章/操作指南等资讯阅读功能,无法进行交互。对于原先的社区RN,除了移植适配鸿蒙,还需要做大量的功能屏蔽等改造。新的社区后台大量采用富文本进行内容编辑,这里介绍一个非常方便的鸿蒙RN三方组件:

@react-native-oh-tpl/react-native-autoheight-webview

react-native-autoheight-webview是一个可以自适应内容高度的web组件,组件在ArkTS原生端需要基于

@react-native-oh-tpl/react-native-webview实现。在引入组件之前需要首先完成@react-native-oh-tpl/react-native-webview的导入,过程可以参考以下文档:

https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-webview.md

其中需要注意的是完成webview组件在原生端的代码导入并能正常引用到。

cpp/generated

PackageProvider.cpp

CMakeList.txt

RNPackagesFactory.ets

完成webview的导入后react-native-autoheight-webview只需要在rn侧添加依赖。autoheight-webview是远程包。

"@react-native-oh-tpl/react-native-autoheight-webview": "^1.6.5-0.0.6",

rn代码中使用较为简单,向组件添加富文本或者html内容即可。会根据内容高度撑开web组件。

import AutoHeightWebView from '@react-native-oh-tpl/react-native-autoheight-webview';
......
return (
<View>
{richContent && (
<AutoHeightWebView
source={{html: richContent}}
/>
</View>
)

可以通过customStyle,injectedJavaScript分别向web添加自定义css与注入js,来对富文本内容做进一步控制,如添加栅格。

{richContent && (
<AutoHeightWebView
source={{html: richContent}}
customStyle={`
* {
max-width: 100% !important;
font-size: 16px !important;
line-height: 1.5 !important;
}
img {
width: 100% !important;
height: auto !important;
}
table {
width: 100% !important;
overflow-x: auto !important;
}
div {
overflow-x: auto !important;
word-wrap: break-word !important;
}
`}
injectedJavaScript={`
const meta = document.createElement('meta');
meta.setAttribute('name', 'viewport');
meta.setAttribute('content', 'width=device-width-10, initial-scale=1.0');
document.head.appendChild(meta);
document.documentElement.style.width = '100%';
`}
javaScriptEnabled={true}
domStorageEnabled={true}
onSizeUpdated={size => console.log('Updated height:', size.height)}
/>

前端控制需要根据后台传入的实际内容显示情况进行调整。项目中后台用到的富文本编辑器较古老,对移动端的适配较差。最好还是在后台能够处理适配移动端。

整体效果如下(西瓜和抖音合并了似乎无法添加视频了)。

https://www.douyin.com/user/self?from_tab_name=main&modal_id=7480891057203399962&showTab=post


不经常在线,有问题可在微信公众号或者掘金社区私信留言

更多内容可关注

我的公众号悬空八只脚

作者:悬空八只脚

链接:https://juejin.cn/post/7480732440287445033

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

React Native开发鸿蒙Next---富文本浏览的更多相关文章

  1. React Native开发技术周报2

    (1).资讯 1.React Native 0.22_rc版本发布 添加了热自动重载功能 (2).技术文章 1.用 React Native 设计的第一个 iOS 应用 我们想为用户设计一款移动端的应 ...

  2. React Native开发技术周报1

    (一).资讯 1.React Native 0.21版本发布,最新版本功能特点,修复的Bug可以看一下已翻译 重要:如果升级 Android 项目到这个版本一定要读! 我们简化了 Android 应用 ...

  3. React Native 开发之 (02) 用Sublime 3作为React Native的开发IDE

    Sublime Text是一个代码编辑器.也是HTML和散文先进的文本编辑器.漂亮的用户界面和非凡的功能,例如:迷你地图,多选择Python插件,代码段等等.完全可自定义键绑定,菜单和工具栏等等.漂亮 ...

  4. React Native 开发笔记

    ReactNativeDemo 学习ReactNative开发,搭建ReactNative第一个项目 React Native 开发笔记 1.安装Homebrew $ /usr/bin/ruby -e ...

  5. React-Native(二):React Native开发工具vs code配置

    从网上翻阅了一些开发react-native的开发工具时,发现其实可选的工具还是比较多的Sublime Text,WebStrom,Atom+Nuclide,vs code 等.因为我用.net生态环 ...

  6. React Native开发入门

    目录: 一.前言 二.什么是React Native 三.开发环境搭建 四.预备知识 五.最简单的React Native小程序 六.总结 七.参考资料   一.前言 虽然只是简单的了解了一下Reac ...

  7. DECO 一个REACT NAtive 开发IDE工具

    DECO 一个REACT NAtive 开发IDE工具. 目前只支持 OS,NO WINDOWS https://www.decosoftware.com/ 一个方便的快速 ERXPRESS 教程:h ...

  8. 【转】【React Native开发】

    [React Native开发]React Native控件之ListView组件讲解以及最齐全实例(19)  [React Native开发]React Native控件之Touchable*系列组 ...

  9. React Native开发的通讯录应用

    React Native开发的通讯录应用(使用JavaScript开发原生iOS应用,vczero) 0.前言: 项目地址:https://github.com/vczero/React-Native ...

  10. iOS程序员的React Native开发工具集

    本文整理了React Native iOS开发过程中有用的工具.服务.测试.库以及网站等. 工具 你可以选择不同的开发环境:DECO.EXPO或者你可以使用Nuclide+Atom,目前我使用EXPO ...

随机推荐

  1. C# USB 摄像头 OpenCV 视频picBox呈现,抓拍图像保存呈现。没有注释版本。

    1.winform 应用程序,两个picturebox空间,一个用于视频呈现,一个用于抓拍呈现. 2.引用包OpenCvSharp4.OpenCvSharp4.Extensions.OpenCvSha ...

  2. Selenium KPI接口 警告弹 -alert/confirm/promp

    应用场景: 有些页面进入后自带弹窗提醒功能需要确认,这时候就需要将焦点定位到alert弹窗上. 使用格式: alert=driver.switchtoalert() alert.accept() 实现 ...

  3. mac、windows 配置python国内镜像源

    前言 我们在使用python pip安装第三方库时,经常会发生超时报错,这是可以指定临近的镜像源快速更新. mac中 在用户目录下建立一个".pip"目录,到目录里新建一个文件&q ...

  4. Excel批量获取当前时间差

    使用now函数获取当前时间 Office 2007 Excel使用now函数 首先打开Excel,选中一个要插入日期的单元格 选中后,点击菜单栏上的插入,选择函数 点击后,会出现一个公式生成器,在上面 ...

  5. 探秘Transformer系列之(15)--- 采样和输出

    探秘Transformer系列之(15)--- 采样和输出 目录 探秘Transformer系列之(15)--- 采样和输出 0x00 概述 0x01 Generator 1.1 Linear 1.2 ...

  6. Win32控制台获取可执行程序的快捷方式的目标位置、起始位置、快捷键、备注等

    Win32控制台获取可执行程序的快捷方式的目标位置.起始位置.快捷键.备注等,示例如下图: #include <iostream> #include <atlstr.h> #i ...

  7. 还原大师-遍历残缺字符串匹配md5杂凑值

    题目: 我们得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母, 为了确定这个神秘字符串,我们通过了其他途径获得了这个字串的32位MD5码. 但是我们获得它的32位 ...

  8. Draw.io:你可能不知道的「白嫖级」图表绘制神器

    介绍 draw.io 是一个在 GitHub 上开源且拥有近十年发展历史的成熟项目,它是一款用于绘制 UML 图表的工具. 如果你曾经为流程图的绘制而流泪,又或是在夜里和UML大战到失眠, 不妨试试它 ...

  9. restful 服务器一个问题,看ChatGPT的威力 (续)

    资料很多,但是真正能经得住7X24运行的还真不容易.说穿了就是你的程序不够健壮. 玩数据处理的,也就是:数据库连接 → 查询 → 拉数据 → 生成结果 → 释放连接 → 返回数据 .可是看下面: FD ...

  10. python API 之 fastapi

    为什么选择 FastAPI? 高性能:基于 Starlette 和 Uvicorn,支持异步请求处理 开发效率:自动交互文档.类型提示.代码自动补全 现代标准:兼容 OpenAPI 和 JSON Sc ...