提问人:HansJuergen 提问时间:5/30/2023 最后编辑:HansJuergen 更新时间:6/4/2023 访问量:26
React native ActivityIndicator 出现在从数据库异步加载之后而不是之前
React native ActivityIndicator appearing after async load from database instead of before
问:
我使用 the 向原生 React 应用程序的用户显示正在从数据库中检索数据。
因此,在本例中,用户使用 和 我检索该世代的所有车辆类型来选择车辆代。
问题是 ActivityIndicator 不是直接显示的,而是在选择后的几秒钟,在从数据库加载数据之后,我不知道为什么。以下是相关的代码片段:ActivityIndicator
Picker
const [isLoading, setIsLoading] = useState(false);
...
const getAllTypesForGeneration = async (generationId) => {
console.log("Getting types...");
const types = await DataStore.query(CarType, (type) =>
type.carGenerationID.eq(generationId)
);
setAllTypes(types);
console.log("Got types...");
setIsLoading(false);
};
...
return (
<View>
<View style={styles.activity}>
<ActivityIndicator
animating={isLoading}
size="large"
color={colors.primary}
/>
</View>
...
<Picker
mode="dropdown"
onValueChange={(itemValue, itemIndex) => {
if (itemValue !== "") {
setIsLoading(true);
setSelectedCarGeneration(allGenerations[itemIndex - 1]);
getAllTypesForGeneration(itemValue);
}
}}
>
...
</View>
);
CarType 表非常大,大约有 ~20000 个条目。我碰巧遇到了一个奇怪的现象。我还有一个函数可以获取特定模型的所有世代,此世代表由 ~900 个条目组成。
const getAllGenerationsForModel = async (modelId) => {
const generations = await DataStore.query(CarGeneration, (generation) =>
generation.carModelID.eq(modelId)
);
setAllGenerations(generations);
setIsLoading(false);
};
当我在 Picker 中添加此函数时,例如:getAllGenerationsForModel
getAllTypesForGeneration(itemValue);
<Picker
mode="dropdown"
onValueChange={(itemValue, itemIndex) => {
if (itemValue !== "") {
setIsLoading(true);
setSelectedCarGeneration(allGenerations[itemIndex - 1]);
getAllGenerationsForModel(itemValue);
getAllTypesForGeneration(itemValue);
}
}}
>
一切正常,ActivityIndicator 直接显示。
答: 暂无答案
评论