react native webview加载本地HTML,解决iOS无法加载成功问题

在react native中使用 "react-native-webview": "^13.13.5",加载HTML文件

Android:

将HTML文件放置到android/src/main/assets目录,访问

bash 复制代码
{uri: 'file:///android_asset/markmap/index.html'}

ios:

在IOS中可以直接可以直接放在react native项目下,访问方式如下

bash 复制代码
require('../../assets/markmap.html')

这里遇到一个问题是编译出来的HTML文件中带有单独的js和CSS的时候在iOS中无法加载成功,解决方法是用vite-plugin-singlefile将前端项目导出为单独文件,我的vite.config.js配置如下:

bash 复制代码
import {defineConfig} from 'vite'
import react from '@vitejs/plugin-react'
import {viteSingleFile} from "vite-plugin-singlefile";


// https://vitejs.dev/config/
export default defineConfig({
    plugins: [react(),viteSingleFile()],
    base: './', // 设置为相对路径

})

如果是其他的打包方式也实现同样的功能就行。

完整的代码:

bash 复制代码
           <WebView
                ref={webViewRef}
                source={Platform.OS==='android'?{uri: 'file:///android_asset/markmap/index.html'}:require('../../assets/markmap.html')}
                style={styles.webView}
                originWhitelist={['*']}
                javaScriptEnabled={true}
                domStorageEnabled={true}
                allowFileAccess={true}
                allowFileAccessFromFileURLs={true}
                allowUniversalAccessFromFileURLs={true}

                onMessage={handleMessage}/>
相关推荐
沃尔威武6 小时前
数据库 Sinks(.net8)
数据库·.net·webview
anOnion7 小时前
构建无障碍组件之Meter Pattern
前端·html·交互设计
修己xj8 小时前
Markdown 里写公式,别只知道 LaTeX!试试 HTML 标签,简单到飞起
html
hhcccchh12 小时前
1.1 HTML 语义化标签(header、nav、main、section、footer 等)
java·前端·html
tangweiguo0305198713 小时前
SwiftUI布局完全指南:从入门到精通
ios·swift
bjzhang7513 小时前
使用 HTML + JavaScript 实现组织架构图
前端·javascript·html·组织架构图
AscendKing15 小时前
免费、易用、覆盖全平台的网页转 PDF 工具
pdf·html·网页保存·网页保存为pdf·保存网页位pdf
T1an-117 小时前
最右IOS岗一面
ios
F2E_Zhangmo17 小时前
react native如何发送蓝牙命令
javascript·react native·react.js
光影少年17 小时前
RN中如何处理权限申请(相机、相册、定位、存储)?使用第三方库还是原生封装?
react native·react.js·掘金·金石计划