gpt4 book ai didi

reactjs - 使用 ScrollView 的 InfiniteScroll - React Native

转载 作者:行者123 更新时间:2023-12-02 19:16:57 25 4
gpt4 key购买 nike

我有一个使用 React Native 本身的 ScrollView 的列表。基本上,我通过 API 返回动态构建一个列表。

async fetchData(userSearch) {
const {route} = this.props;
const {params} = route;
const {type} = params;

this.setState({
loading: true,
});

const responseProcedures = await scheduleResource.getProcedures(userSearch);

this.setState({
procedures: responseProcedures.data,
loading: false,
});
}



<ScrollView
onScroll={(event) => this.shouldLoadMoreContent(event)}
>
{procedures.map(procedure => (
<ArrowBox key={procedure.id} onPress={() => RootNavigation.navigate('ProcedureDetails', {procedure})}>
<Text bold style={styles.ProcedureTitle}>
{procedure.name}
</Text>
{!!procedure.synonyms.length && (
<>
<Text bold style={styles.ProcedureSynonymTitle}>
Sinônimos
</Text>
<View style={styles.ProcedureSynonymOptionsContainer}>
{procedure.synonyms.map(synonym => <Text style={styles.ProcedureSynonymOption} key={synonym}>{synonym}</Text>)}
</View>
</>
)}
</ArrowBox>
))}
</ScrollView>

问题是我加载了 API 的整个返回结果,速度变慢了。

我想知道当我到达页面末尾时如何动态加载内容并在 api 中进行新的调用。API 允许我设置偏移量和限制。

有人能给我举个例子吗?

谢谢!!!!

最佳答案

基本上,ScrollView 并不是为处理动态数据而设计的,为执行此功能而设计的正确组件称为 Flatlist。它的工作方式几乎与 ScrollView 完全相同,但速度更快,并且只会渲染屏幕上显示的组件。

请像这样从 React Native 导入 Flatlist...

//At the top of your file, please import FlatList together with all the modules that you want
import { FlatList, Text, View } from "react-native";

然后将代码中的整个 ScrollView 替换为如下所示的 Flatlist:

<FlatList
keyExtractor={(procedure) => procedure.id}
data={this.state.procedures}
renderItem={(procedure) => {
return (
<ArrowBox
key={procedure.id}
onPress={() =>
RootNavigation.navigate("ProcedureDetails", {
procedure })}>
<Text bold style={styles.ProcedureTitle}>
{procedure.name}
</Text>
{!!procedure.synonyms.length && (
<>
<Text bold style={styles.ProcedureSynonymTitle}>
Sinônimos
</Text>
<View
style={styles.ProcedureSynonymOptionsContainer}>
{procedure.synonyms.map((synonym) => (
<Text
style={styles.ProcedureSynonymOption}
key={synonym}>
{synonym}
</Text>
))}
</View>
</>
)}
</ArrowBox>
);
}}
></FlatList>;

关于reactjs - 使用 ScrollView 的 InfiniteScroll - React Native,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63583996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com