使用lottie.js给出错误TypeError:尝试分配给readonly属性

时间:2020-07-16 11:37:37

标签: react-native

我创建了一个加载器动画,安装了lottie.js,然后下载了loader.json文件,然后创建了这样的组件ActivityIndi​​catior

import React from "react";
import LottieView from "lottie-react-native";

function ActivityIndicator({ visible = false }) {
  if (!visible) return null;

  return (
    <LottieView autoPlay loop source={require("../animation/loader.json")} />
  );
}

export default ActivityIndicator;

然后将其导入列表屏幕并定义为const [loading,setLoading] = useState(false);

export default function ListingsScreens({ navigation }) {
  const [listings, setListing] = useState([]);
  const [error, setError] = useState(false);
  const [loading, setLoading] = useState(false);
  useEffect(() => {
    loadListings();
  }, []);
  const loadListings = async () => {
    setLoading(true);
    const response = await listingApi.getListings();
    setLoading(false);

    if (!response.ok) return setError(true);

    setError(false);

    setListing(response.data);
  };
  return (
    <ExpoScreen style={styles.screen}>
      {error && (
        <>
          <AppText> Could not retrieve the listings</AppText>
          <Button title="retry" onPress={loadListings} />
        </>
      )}
      <ActivityIndicator visible={true} />
      {/* <FlatList
        data={listings}
        keyExtractor={(listings) => listings.id.toString()}
        renderItem={({ item }) => (
          <CardList
            title={item.title}
            subtitle={"$" + item.price}
            imageUrl={item.images[0].url}
            onPress={() => navigation.navigate("ListingDetails", item)}
          />
        )}
      /> */}
    </ExpoScreen>
  );
}

enter image description here

2 个答案:

答案 0 :(得分:2)

重新启动服务器可解决该错误。我也遇到了同样的问题。

答案 1 :(得分:1)

确保您使用的是最新版本的lottie-react-native。升级到3.4.0可以解决此问题。