在react-native-pager-view(或任何其他)内动态更改内容

2023-12-01

我正在开发一个项目,我将在寻呼机视图中逐页显示某本书的详细信息和信息作为页面组件,该书包含 500 多个页面,所以我不能只创建 500 个页面组件,例如并将它们插入到寻呼机中。我想的是我可以获得一个特定的页面,仅在上一页和下一页旁边呈现其组件。当用户滑动到下一页/上一页时,我会更改组件状态,并使用新的 3 个页面(当前页面、上一页和下一页)重新渲染。我脑子里的逻辑很合理,但当我尝试应用它时,它就行不通了。

谁能帮助我,引导我观看某些更能解释这一原理的视频?我觉得我错过了一些东西。

代码如下:

首先我有 PagesContainer,在这里我将根据当前页面创建 PagesDetails 组件,并将这些页面放在 React-native-pager-view 中(你可以建议我一个更好的选择)。仅出于测试目的,我设置滑动结束回调(onPageSelected)以增加当前页码状态,然后这将导致组件重新渲染并创建新的页面组件,只有当用户滑动到当然新页面:

function PagesContainer({ currentPageNumber, setCurrentPageNumber }) {
    const [pageComponents, setPageComponents] = useState([]);
    useEffect(() => {
        let compArr = [];
        compArr.push(<PageDetails key="current" pageNumber={currentPageNumber} />);
        if (currentPageNumber > 1) {
            compArr.unshift(<PageDetails key="previous" pageNumber={currentPageNumber - 1} />)
        }
        if (currentPageNumber <= 500) {
            compArr.push(<PageDetails key="next" pageNumber={currentPageNumber + 1} />)
        }
        setPageComponents(compArr);
    }, [currentPageNumber])

    return (<PagerView style={{ flex: 1 }} 
    initialPage={currentPageNumber == 1 ? 0 : 1}
    layoutDirection={"rtl"}
    onPageSelected={(PageSelectedEvent)=>{setCurrentPageNumber(currentPageNumber + 1)}}
    >
        {pageComponents.map(page => {
            return page;
        })}
    </PagerView>)
}

然后在这里我有我的 PageDeatails 组件,我在其中简单地显示页面的文本和详细信息,我从在代码文件最顶部导入的 bookData 对象中获取数据:

function PageDetails({ pageNumber }) {
    const [pageContent, setPageContent] = useState(null);
    useEffect(() => {
        setPageContent(bookData[pageNumber]["pageContent"]);
    }, []);
        return (
        <View>
            {pageContent && <View>
                {pageContent.map(item => {
                    return (<Text>item</Text>)
                })}
            </View>
            }
        </View>
    )
}

这个逻辑在我的脑海中是完全合理的,但当我测试它时它不起作用......我错过了什么?我究竟做错了什么?


使用 PagerView 参考useRef还存储页面索引并传递给初始页获取当前页面索引已选择页面打回来

like:

initialPage={currentPageIndex}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在react-native-pager-view(或任何其他)内动态更改内容 的相关文章

  • 如何使用PNGJS库从rgb矩阵创建png?

    我无法从此处的文档创建 PNG 文件 编码 https github com niegowski node pngjs https github com niegowski node pngjs 该文档提供了有关操作现有 PNG 的示例 为
  • 如何编写带有回调的简单react-native本机模块

    如何以最简单的方式完成这项工作 我无法将回调发送到react native 可能我错过了一些东西 ReactMethod public void testCallback Callback cb String sampleText Java
  • 如何在javascript中访问文件? [复制]

    这个问题在这里已经有答案了 是否可以在 JavaScript 中访问扩展名为 txt 或 file 的文件 我想在我的函数中调用这个文件 如果您谈论的是在 Web 浏览器中运行的 javascript 那么答案是否定的 您无法访问客户端计算
  • 基于布尔 prop 的条件字段验证

    我想要favoriteAlcohol仅当以下情况时才需要验证 需要的字段props isAdult传递给组件的是true Yup object shape favoriteAlcohol Yup string when props isAd
  • 循环结束后从头开始重新迭代 for 循环 - JS

    我有一个数组和一个对象数组 我基本上需要将数组的第一个元素映射到数组内对象的第一个元素 依此类推 两个数组的长度都可以是可变的 并且一旦循环结束 循环应该从头开始 但是 我不确定是否再次开始循环 这是我的代码 const colors 7c
  • JSON数据通过JS/AJAX转化为PHP

    Goal 我正在使用 coinmarketcap com API link https api coinmarketcap com v1 ticker convert EUR 预先我将他们的数据转换成 PHP 样本 现在我想使用AJAX J
  • 更改 c3.js 散点图中气泡的大小

    我有一个散点图 我想改变点的大小 使它们看起来像气泡 有人可以告诉我如何改变气泡的大小吗 这是我的代码 var chart c3 generate data xs IBM ibm x Microsoft microsoft x column
  • 三 JS 网格在模型的另一侧可见

    所以我使用在 Blender 中为 ThreeJS 制作的自定义模型 我将其导出为 obj 文件 并使用 Three js 转换实用程序创建 json 文件 我将其设置为旋转 当它旋转时 您可以看到模型的另一侧 这是我用来加载它的代码 lo
  • 如何通过 Javascript 获取 Bootstrap 版本?

    有没有办法通过调用函数来获取Bootstrap版本 我做了一些研究 但找不到任何方法 版本信息包含在开头的注释中 如下所示 引导程序 v3 3 7 http getbootstrap com http getbootstrap com 版权
  • 如何仅在客户端渲染 NextJS 13 中的组件

    我目前正在开发一个项目 该项目要求我的组件对客户端频繁变化的条件做出反应 但据我所知 NextJS 13 似乎强制服务器端渲染 我尝试使用动态加载import dynamic from next dynamic and const Comp
  • JavaScript 在对象中创建数组并将数据推送到数组

    我是编程新手 我正在尝试 React 并具有函数 addComment 当用户向新闻添加评论时执行该函数 此时我需要创建一个属性comments 数组 并分配或推送到该数组输入评论值价值 但现在我只重写了数组的 0 个元素 无法添加新元素
  • 使用 Javascript 基于 Cookie 的重定向

    我正在尝试根据 cookie 的存在创建重定向 所以当用户连接到我的网站时jonathanstevens org他们第一次被重定向到jonathanstevens org landing 代码部分 Global js function cr
  • JavaScript 检查 null 与 undefined 以及 == 和 === 之间的区别

    如何检查变量是否null or undefined和有什么区别null and undefined 有什么区别 and 很难在 Google 上搜索 如何检查变量是否null or undefined 是变量null if a null o
  • 如何在html5画布中向前和向后移动圆圈中的对象?

    我正在 html5 canvas 中开发一个小应用程序 我需要使用键盘按键以圆周运动移动对象 我可以使用键盘按键移动对象 但存在错误 该对象不会从同一位置向后或向前移动 任何人都可以帮助我完成此操作 请检查以下代码 任何形式的帮助将非常感激
  • 包含菜单按钮的 Ag-grid 单元格

    我在我的项目中使用社区版本的 ag grid 我正在尝试在每一行的一个单元格中添加菜单按钮 单击菜单按钮时 应该会弹出菜单 其中包含编辑 删除 重命名选项 并且当单击菜单上的任何项目时 我需要触发具有行值的事件 我正在尝试创建一个将显示按钮
  • 检测 html 元素内的用户选择

    如何检测用户选择 用鼠标突出显示 是否在某个元素内 某个元素的子元素 Example div sdfsdf div some span content span div sdfsd div 伪代码 if window getSelectio
  • 如何使用Javascript统计通过ajax返回的
  • 的数量?
  • 我有一个 ajax 代码 它将列表项返回为 li one li li Two li 每次都会返回不同数量的 li 的 我想查一下数量 li li 它返回 如何使用 JavaScript 检查它 给你 returnedHTML find li
  • 将事件处理程序分配给带括号和不带括号的方法之间的区别

    假设您有以下内容 function doStuff code 2 种说法有什么区别 window onload doStuff window onload doStuff 两个语句都立即调用该方法 但如果我使用第一个语句 我可以将 onlo
  • 根据 Google Apps 脚本中的另一个数组过滤数组

    我对 JavaScript 相当陌生 可能需要一些帮助来解决我在处理 Google Apps 脚本时遇到的问题 我打算做的是根据数组过滤数据 该数组是从特定工作表中的特定单元格中获取的 其中包含我不想保留在数据中的字符串元素 换句话说 包含
  • 父元素的 mousedown 事件中的 offsetX 和 offsetY 错误

    我在 mousedown 上获取 offsetX 时遇到问题 下面是我的代码 div Click the text The mouseDown function is triggered when the mouse button is p

随机推荐

  • Pyside 安装失败(Python 2.7.4)

    我刚刚升级到 Ubuntu 13 04 测试版 尝试使用 pip 将 pyside 安装到 Virtualenv python 2 7 4 时遇到错误 error Failed to locate the Python library us
  • 在 C 中制作 shell 时正确的管道方式是什么

    我正在尝试创建自己的 shell 我相信我已经正确完成了分叉 但我不知道如何正确进行管道传输 任何帮助或提示将不胜感激 基本上我的管道无法工作 我花了很长时间试图找出如何让它们在进程之间正确传输数据 include
  • PHP 和浏览器“后退”按钮 - 到底发生了什么

    假设我的 PHP 页面执行 真实 操作 我所说的 真实 是指执行数据库操作 写入文件等 而不是仅仅发送 HTML 当我点击 PHP 页面的 后退 按钮时 假设它是 GET 这是否意味着我的 PHP 代码不一定在所有浏览器上始终运行 如果我有
  • 原则 2:管理多对多关联的最佳方式

    Doctrine2 ORM 有 2 种技术方法来处理多对多关联 1 对于两个实体之间的 简单 关系 并且没有附加属性 Use ManyToMany 实体之间的关联 这种情况下直接使用链接表 不需要关联实体 2 当链接表引入额外字段或超过 2
  • 如何在缩放后应用 d3.js svg 裁剪

    我正在尝试将 svg clippath 与 d3 js 和缩放行为一起使用 以下代码创建一个矩形 然后将由矩形剪切区域对其进行剪切
  • 当文件在移动后发生重大修改时,Git 不会检测重命名

    考虑这个测试脚本 bin sh x rm rf test git init test cd test for I in 1 100 do echo I gt gt x done git add x git commit am initial
  • postgresql中的自定义自增字段(发票/订单号)

    基本要求是创建以下格式的订单号 M M SSS 其中 MM 代表当前月份 SSSS 代表该月的订单顺序 例如 1 002 代表一月份提交的第二个订单 使用触发器我希望自动增量和插入透明地工作 不幸的是 我已经很长时间没有接触存储过程了 这是
  • Zend Framework - 安装旧版本

    我已经安装了ZF3 但我在一家只使用 ZF2 的公司工作 我也必须能够使用 Doctrine 由于版本 3 无法与主义一起使用 我必须将其降级 或安装旧版本 但我不知道该怎么做 因为http framework zend com downl
  • Magento 1.8 的 Nginx 配置

    有人知道如何在 nginx 服务器的配置文件中配置 server 吗 我有下面这样的东西 server server name local com root some path index index php location try fi
  • apache 服务器上的 500 错误 - “此处不允许AllowOverride”

    我已经在我的 Mac OSX 10 9 上设置了一个服务器 但它返回 500 错误 并在错误日志中显示以下消息 alert client 1 Users user Sites mysite htaccess AllowOverride no
  • ASP 格式化日期

    您好 我正在尝试在 ASP 中获取以特定格式 yyyymmdd 显示的日期 这是我到目前为止所尝试过的 但没有运气 任何帮助表示赞赏 谢谢 tr td b Call Date b td td align center a href targ
  • 这个额外的字节是什么?

    我正在研究 PE 可移植可执行文件 格式 但我发现用 MinGW 和 MSVC 编译的 C 程序之间存在差异 这是 此程序无法在 DOS 模式下运行 之后和 PE 魔术签名之前的一些额外字节 有人知道这是什么以及为什么有 Rich 这个词吗
  • 在 KAFKA 中最大轮询间隔之前发布新事件后,滞后偏移被跳过

    Kafka v2 4 消费者配置 kafka consumer auto offset reset earliest kafka consumer auto commit false Kafka 消费者容器配置 Bean public Co
  • Julia 并行性:@distributed (+) 比串行慢?

    在互联网上看到一些关于 Julia 并行性的教程后 我决定实现一个小的并行片段来计算调和级数 序列号为 harmonic function n Int64 x 0 for i in n 1 1 summing backwards to av
  • Firebase Firestore 易于记住的参考资料

    我们使用 Firebase Firestore 进行数据存储 当用户创建新房间时 我们希望引用易于记住 以便用户可以与其他用户共享房间 ID 代码 目前 Firestore 将创建一个唯一的引用 例如 DvfTMYED5cWdo5qIraZ
  • NHibernate - 通过不同的键多次 JOIN 到同一个表

    另一个 NHibernate JOIN 问题 我正在尝试通过不同的两个表连接一个表中的两个不同的属性 键 但我无法获得第二个 JOIN 属性 简化示例 我的课 namespace Domain public class Message re
  • 谷歌分析。增强的电子商务。产品展示次数限制

    有人知道增强型电子商务 Google Analytics 发送展示数据的限制吗 我发现奇怪的行为 谷歌限制发送超过 8KB 的数据 我使用数据层来发送电子商务数据 我的页面上有多达 100 个产品 我还使用 unicode 发送产品和类别名
  • 当子文档或集合完成创建时,不会触发 firestore OnCreate

    因此 我正在使用 flutter 和 firebase 构建一个聊天应用程序 每当两个新用户第一次开始互相聊天时 每当其中一个用户发送第一条消息时 我需要触发一个功能 这样我就可以将该信息存储在某处以显示稍后将其作为聊天记录提供给用户 曾经
  • 我不明白Oracle文档中的这一部分?

    你好 我是 Ankur 已经用 java 编码好几年了 我之前读过 Herbert Schildt 的 Head First Java The Complete Reference 最近我在这页中遇到了一个重大谬误 甲骨文文档注意部分说 如
  • 在react-native-pager-view(或任何其他)内动态更改内容

    我正在开发一个项目 我将在寻呼机视图中逐页显示某本书的详细信息和信息作为页面组件 该书包含 500 多个页面 所以我不能只创建 500 个页面组件 例如并将它们插入到寻呼机中 我想的是我可以获得一个特定的页面 仅在上一页和下一页旁边呈现其组