企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[toc] # 配置标题栏 ![](https://img.kancloud.cn/26/00/26006c01aa11405abd5d5c1945339ffb_2106x1380.png) # 列表页的状态栏 可以使用 RN 中内置的一个组件 `StatusBar` 设置状态栏的背景色、字体颜色、是否透明等: ![](https://img.kancloud.cn/96/be/96bef3fee0c95d1e3ada25ff98dedcb9_2060x768.png) # 动态设置标题栏 页面的标题栏可以通过调用 `navigation.setOptions` 方法来动态的设置。 所以页面上的地区应该: 1. 当用户打开这个页面时,根据用户的 IP 地址获取这个用户所在的城市 2. 通过调用 `navigation.setOptions` 方法把城市设置成为标题 为了演示,我们先不获取地区,先随机设置一个,比如:沭阳。 ![](https://img.kancloud.cn/93/e7/93e75de576ca1daf357b475fc9fec086_2018x1210.png) 扩展:获取用户详细地址。 # 视频列表 在 RN 中制作列表使用 `FlatList` 组件实现。 在 RN 中实现滚动需要使用组件: 1. ScrollView 组件:数据少时,比如只需要滚动几件时使用。 2. FlatList 组件:长数据列表时,性能更好。 3. SectionList 组件: ScrollView 和 FlatList 组件的区别: ![](https://img.kancloud.cn/6f/43/6f437f0879eb8eca132c7dde03230448_1646x576.png) ## 背景图片 在 RN 中背景图片必须要使用 `ImageBackground` 组件来实现。(这和网页中使用 CSS 的 backgroundImage 不同~~~) ![](https://img.kancloud.cn/6e/ac/6eac378317f4609c76c9c5d6644eae1e_1942x812.png) ## 两列数据 FlatList 组件中有一个属性:`numColumns` 可以设置列数据。 注意:每条记录上要使用 flex 布局,否则无效。 ![](https://img.kancloud.cn/39/6f/396fba16aa6531cee791724f94a2034f_1946x1426.png) ## 下拉刷新 `FlatList` 组件中有两个属性实现下拉刷新功能的: ~~~ refreshing:布尔,是否显示加载的图标。 onRefresh:函数,当下拉时会触发函数。 ~~~ ### 显示刷新图标 ![](https://img.kancloud.cn/e7/e1/e7e12a20dc3466fa2247434a29a1149f_1800x1402.png) ### 加载数据并隐藏图标 ![](https://img.kancloud.cn/ee/a3/eea3c3f6f3f6703892af86364729e12b_1720x1466.png) ## 触底加载更多 `FlatList` 组件中有以下几个属性可以用来实现触底加载更多: ~~~ ListFooterComponent:组件,列表最底部显示的加载图标。 onEndReachedThreshold:数值,距离底部的百分比,比如:0.2,含义当滚动到距离底部20%的时候触发加载更多 onEndReached:函数,当滚动到底部时触发的函数。 ~~~ ![](https://img.kancloud.cn/c8/82/c882c00c587538fdae3a265ec9d6d23a_2180x1124.png) ### 控制触底加载的频率 如果用户在底部上下来回滑动,会导致频繁的触发触底函数,所以我们应该通过一个变量控制一下,如果当前正在加载中,那么即使再次触发也不要触发加载事件。 1. 定义一个普通的全局变量 ![](https://img.kancloud.cn/74/45/74455e8cb0a0cc9d74796709efcb8598_1300x848.png) 2. 在函数中通过这个变量来控制一次只触发一次 ![](https://img.kancloud.cn/97/5e/975efaef3d05c1d9860b92705e33a775_1170x860.png) 问题:定义一个普通变量,和定义一个 state 数据有什么区别? 普通变量:在修改时,不会触发页面重新渲染。 state 数据:在修改之后,会触发组件的重新渲染。 总结:对页面内容没有任何影响 的数据可以定义为普通变量,对页面有影响 的数据,比如:是否显示加载图标的state数据,会影响 到页面中是否显示图片,这种需要定义为state。