【发布时间】:2021-03-28 14:50:38
【问题描述】:
我正在调用 Api 来获取数据,但数据确实很重。我想知道我是在 useEffect 内的正确位置调用它还是应该在其他地方调用它。我已经检查了console.log,但console.log 的数量超过了我在API 中拥有的对象数量。我的代码是:
const ProductsList = () => {
const [products, setProducts] = useState([]);
const [isLoading, setLoading] = useState(true);
useEffect(() => {
let isMounted = true;
getProducts().then((response) => {
if (isMounted) {
console.log('im being called');
setProducts(response);
setLoading(false);
}
});
return () => { isMounted = false; };
}, [products]);
return (
<View style={styles.container}>
{isLoading ? <ActivityIndicator /> : ((products !== [])
&& (
<FlatList
data={products}
keyExtractor={(item, index) => index.toString()}
renderItem={({ item }) => {
return (
<Item
style={{ marginLeft: 35 }}
name={item.name}
date={item.date}
address={item.adress}
/>
);
}}
/>
)
)}
</View>
);
};
【问题讨论】:
-
是的,这似乎是正确的。但是,如果您没有任何错误并且只想让别人查看您的代码,请访问codereview.stackexchange.com。这是一个很棒的社区,人们愿意就潜在改进向您提供详细的反馈。
标签: javascript react-native use-effect