React native ActivityIndicator 出现在从数据库异步加载之后而不是之前

React native ActivityIndicator appearing after async load from database instead of before

提问人:HansJuergen 提问时间:5/30/2023 最后编辑:HansJuergen 更新时间:6/4/2023 访问量:26

问:

我使用 the 向原生 React 应用程序的用户显示正在从数据库中检索数据。 因此,在本例中,用户使用 和 我检索该世代的所有车辆类型来选择车辆代。 问题是 ActivityIndicator 不是直接显示的,而是在选择后的几秒钟,在从数据库加载数据之后,我不知道为什么。以下是相关的代码片段:ActivityIndicatorPicker

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 中添加此函数时,例如:getAllGenerationsForModelgetAllTypesForGeneration(itemValue);

<Picker
          mode="dropdown"
          onValueChange={(itemValue, itemIndex) => {
            if (itemValue !== "") {
              setIsLoading(true);
              setSelectedCarGeneration(allGenerations[itemIndex - 1]);
              getAllGenerationsForModel(itemValue);
              getAllTypesForGeneration(itemValue);
            }
          }}
        >

一切正常,ActivityIndicator 直接显示。

JavaScript ReactJS React-Native 异步

评论


答: 暂无答案