@epubjs-react-native/core

中文文档
1.4.8发布于 2026/09/08MITTypeScriptESM + CJS零依赖近 30 天下载 8363

一个数字读取器,使用.opf.epub格式,在网页视图内使用epub.js库进行本地反应.

中文使用文档
文档目录5 节
  1. 安装
  2. 使用量
  3. 阅读器参数
  4. 钩子
  5. 许可证

epubjs - 反应 - 内生

一个数字读取器,使用.opf.epub格式,在网页视图内使用epub.js库进行本地反应.

安装

npm install @epubjs-react-native/core
yarn add @epubjs-react-native/core

根据您想要应用此库的工程类型, 遵循以下步骤 :

零安装

npm install @epubjs-react-native/file-system react-native-fs react-native-webview react-native-gesture-handler
yarn add @epubjs-react-native/file-system react-native-fs react-native-webview react-native-gesture-handler

展览安装

npx expo install @epubjs-react-native/expo-file-system react-native-fs react-native-webview react-native-gesture-handler

如果您为 iOS 开发, 请使用此命令安装 CocoaPods 道口( 如果您使用 expo 管理的项目, 您不需要此)

在您的 ios 项目文件夹中运行 :

npx pod-install

对于赤子反应本地项目,请添加以下权限: Info.plist数字 :

<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>

使用量

在 Reader Provider 中包入您的根组件 。 如果你有一个香草 React Industrial 的项目,一个好主意是把它添加到被传递到 App Registry 的组件中. 编译器。 这通常会出现在index.js文件中. 如果有会展项目,可以在App.js文件中的导出组件内完成.

import * as React from 'react';
import { AppRegistry } from 'react-native';
import { ReaderProvider } from '@epubjs-react-native/core';
import { name as appName } from './app.json';
import App from './src/App';

export default function Main() {
  return (
    <ReaderProvider>
      <App />
    </ReaderProvider>
  );
}

AppRegistry.registerComponent(appName, () => Main);

这个 <ReaderProvider> 构成部分提供 <Reader> 框架所有组成部分的操作方法. 没有这个 useReader 钩子不通.

在上述步骤之后,您可以将阅读器初始化如下:

import * as React from 'react';

import { SafeAreaView } from 'react-native';
import { Reader, useReader } from '@epubjs-react-native/core';
// import { useFileSystem } from '@epubjs-react-native/file-system'; // for Bare React Native project
// import { useFileSystem } from '@epubjs-react-native/expo-file-system'; // for Expo project

export default function App() {
  const { goToLocation } = useReader();
  return (
    <SafeAreaView style={{ flex: 1 }}>
      <Reader
        src="https://s3.amazonaws.com/moby-dick/OPS/package.opf"
        fileSystem={useFileSystem}
      />
    </SafeAreaView>
  );
}

阅读器参数

参数类型说明
srcstring可能是一个 base64, (中文(简体) ), epub, (中文(简体) ), opf要求.
widthnumber stringEPub租借的宽度. 可选的.
heightnumber stringEPub租借地的高度. 可选的.
fileSystemfunction返回 a 的函数 FileSystem 对象。 要求.
initialLocationePubCfi可以是ePubCfi或章节url. 可选的.
enableSwipeboolean启用刷新动作 。 默认是 true。 。 。 .
enableSelectionboolean启用书上文本选择功能 。 默认是 true。 。 。 .
onSwipeLeftfunction检测到左手势时调用 。 可选的.
onSwipeRightfunction检测到刷取右手势时调用 。 可选的.
renderLoadingFileComponentJSX.Element书装入时放出. 可选的.
renderOpeningBookComponentJSX.Element书被渲染的时候看起来 可选的.
onStartedfunction书载起后即召入. 可选的.
onReadyfunction书一展出就叫了 可选的.
onDisplayErrorfunction书籍未显示时调用 。 可选的.
onRenderedfunction放弃吧,已经做了一个部分。 可选的.
onChangeSectionfunction更改区域时调用 。 可选的.
onResizedfunction更改页面时调用 。 可选的.
onLocationChangefunction更改页面时调用 。 可选的.
onSearchfunction在书被搜出后召去一次. 可选的.
onLocationsReadyfunction位置生成后立即调用 。 可选的.
onSelectedfunction文本选择发生后立即调用 。 可选的.
onOrientationChangefunction检测到屏幕方向变化时调用 。 可选的.
onPressfunction书被按下时召入. 可选的.
onDoublePressfunction书被双按时叫来. 可选的.
onBeginningfunction当书在主页上被调用. 可选的.
onFinishfunction书入出后召入. 可选的.
onLayoutfunction书版式改变时调用. 可选的.
defaultThemeobject主题对象. 可选的.
allowScriptedContentboolean允许在沙盒上运行脚本内容 . Android 的默认是虚假的, 在 iOS 中是真实的
allowPopupsbooleanEpubjs 正在将 epub 内置内容和 iframe 默认为 sandbox = “ allow- same- generous ” , 以便打开链接或运行 javascript 在 epub 中, 您需要通过这个参数 .
onPressExternalLinkfunction外部链接按下时引用的函数 。 使用时 allowPopups 属性自动启用
menuItemsarray选择文本时将显示的一系列对象。 空阵列会压制菜单 .
onAddAnnotationfunction在书中添加注释时引用的函数 .
onChangeAnnotationsfunction当注释数组被修改时引用的函数 .
onPressAnnotationfunction按下注释时引用的函数 .
initialAnnotationsarray用于装入本并附有说明
onAddBookmarkfunction
onRemoveBookmarkfunction
onRemoveBookmarksfunction
onUpdateBookmarkfunction
onChangeBookmarksfunction修改书签数组时引用的函数 .
initialBookmarksarray渲染书后装入书签
injectedJavascriptstring提供书后会被注入的JavaScript.
getInjectionJavascriptFnfunction提供注入 Javascript 函数, 与 WebView 函数相同
onWebViewMessagefunction网络视图事件收听器, 与网络视频相同
managerdefault continuous
flowauto paginated scrolled scrolled-doc scrolled-continuous
snapboolean
spreadauto none always
fullsizeboolean
waitForLocationsReadyboolean仅在生成位置后渲染书本
keepScrollOffsetOnLocationChangeboolean更改位置时防止滚动顶部。 与 scrolled-doc 流动.
charactersPerLocationnumber默认为 1600

钩子

使用读取器

useReader() 是一个定制的钩子,它将返回所有书的状态和帮助你的方法. 确定您在阅读器中使用

const { changeFontSize, goToLocation, ... } = useReader();
方法
方法接收说明
changeFontSizesize更改书中所有元素的字体大小 。 可能是一个px,pt或%.
changeFontFamilyfont更改书中所有元素的字体家族
goToLocationcfi转到书中的特定位置
getLocations获取书的总位置
goPreviousPaginateOptions转到书中上一页
goNextPaginateOptions转到书中的下一页
searchquery搜索书中的特定文本
clearSearchResultsvoid清除搜索结果
changeThemetheme更改活动主题
getCurrentLocation返回书的当前位置
getMeta返回包含该书元数据的对象.
addAnnotationannotation在书中附上注释.
addAnnotationByTagIdannotation在书中附上由 dom 元素标记 id 编写的注释 .
updateAnnotationannotation, data, styles更新注释数据和样式
updateAnnotationByTagIdannotation, data, styles通过 domm 元素标记 id 更新注释数据和样式
removeAnnotationannotation书中分出注释.
removeAnnotationByTagIdannotation书中用多姆元素标记id来解析注释.
removeAnnotationByCfi cfi书中的解析说明由提供cfi.
removeAnnotationstype?: optional解出书中所有注释. 可以按类型拆分
removeSelection删除选择
addBookmarkbookmark附加书签
updateBookmarkid, data更新书签数据
removeBookmarkbookmark删除书签
removeBookmarks删除全部书签
injectJavascriptfunction提供书后会被注入的JavaScript.
changeFlowFlow将引渡的流量调整为相接或滚动(相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相相接相接相接相接相接相接相
国家
  • theme: 含有主题的对象.
  • key: 工作如书上独有的ID.
  • atStart:表示是否在书的开头.
  • atEnd:表示是否在书尾.
  • currentLocation:本作目前的位置.
  • totalLocations: 地点总数.
  • progress:本作的进展.
  • isLoading:表示书是否在装入.
  • searchResults: 搜索结果.
  • meta:包含本作元数据的对象.
  • annotations:包含本作注释的数组.
  • section:本作目前一节(章节).
  • toc: 也叫目录,是一份命令内容链接列表.
  • landmarks: 包含一系列主要内容
  • bookmarks: 包含书签的数组.
  • isBookmarked:显示当前位置是否为书签.

这个 meta 对象包含:

  • 覆盖 (字符串、 矩阵缓冲、 无效或未定义):书的封面图像 e.g.data:image/jpeg;base64,/9j/4AAQSkZJ...
  • 作者 (弦声): 该书的创作者/作者姓名 e.g. Herman Melville
  • 标题 (弦声): 该书的标题 e.g. Moby-Dick
  • 说明 (弦声):本作的描述/摘要.
  • 语言 (弦声) : 该书的语言 e.g. en-US
  • 出版社 (弦声):"电子书"出版社 e.g. Harper & Brothers, Publishers
  • 权利 (弦声): 该书的权利 e.g. This work is shared with the public using the Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license.

实例

你喜欢这个项目吗? 考虑 赞助 计划要保持活力

许可证

麻省理工学院

版本与发布记录

@epubjs-react-native/core 共发布 105 个版本,首次发布于 2022/08/11;过去 12 个月发布了 1 个版本。

版本发布日期距今
1.4.8latest2026/09/082 个月前
1.4.72025/01/271.8 年前
1.4.62024/12/101.9 年前
1.4.52024/06/152 年前
1.4.42024/06/042 年前
1.4.32024/05/312 年前

其他发布通道:staging → 1.4.0-beta.39,alpha → 1.4.0-alpha.4,beta → 1.4.0-beta.50。

关于 @epubjs-react-native/core 的常见问题

@epubjs-react-native/core 是什么?

一个数字读取器,使用.opf.epub格式,在网页视图内使用epub.js库进行本地反应.

如何安装 @epubjs-react-native/core?

在项目目录运行 npm install @epubjs-react-native/core,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(*)、react-native(*)、react-native-webview(*)、react-native-gesture-handler(*)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@epubjs-react-native/core 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@epubjs-react-native/core 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@epubjs-react-native/core 可以商用吗?

@epubjs-react-native/core 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@epubjs-react-native/core 的下载量有多少?

根据 npm 官方下载统计,@epubjs-react-native/core 在 2026/10/14 – 2026/11/12 这 30 天内被下载 8,363 次,日均约 279 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@epubjs-react-native/core 还在维护吗?

最新版本 1.4.8 发布于 2026/09/08(2 个月前);至今共发布 105 个版本,其中过去 12 个月发布了 1 个;首次发布于 2022/08/11。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。