我重构了我的代码以使用useEffect钩子而不是使用class,但是我在刷新结果时遇到了内存泄漏。我确实使用了useEffect,但我仍然收到一条错误消息,不确定我在代码中哪里犯了错误。
我收到以下错误:
警告:来自 useState() 和 useReducer() Hooks 的状态更新不支持第二个回调参数。要在渲染后执行副作用,请使用 useEffect() 在组件主体中声明它。
import React, { useEffect, useState} from 'react';
import { FlatList, View, TouchableHighlight } from 'react-native';
import { USANews } from '../components/fetchNews';
import Article from '../components/Article';
const homeScreen = ({ handleRefresh, navigation, }) => {
const [state, setState] = useState({articles: [], refreshing: true});
useEffect (() => {
fetchNews();
}, )
const fetchNews = () => {
USANews() .then(articles => {
setState({ articles, refreshing: false });
})
.catch(() => setState({ refreshing: false }));
};
handleRefresh = () => {
setState({ refreshing: true }, () => fetchNews());
};
return (
<View style={{backgroundColor: '#fffafa'}}>
<FlatList
data={state.articles}
keyExtractor={item => item.url}
refreshing={state.refreshing}
onRefresh={handleRefresh}
renderItem ={({item}) => {
return (
<TouchableHighlight onPress={() => navigation.navigate('Detail',
{title: item.title, description: item.description, urlToImage: item.urlToImage})}
>
<Article article={item} />
</TouchableHighlight>
);
}}
/>
</View>
);
}
export default homeScreen;
互换的青春
相关分类