为了账号安全,请及时绑定邮箱和手机立即绑定

确保 useState() 钩子已经由 useEffect hook 更新?

确保 useState() 钩子已经由 useEffect hook 更新?

慕森卡 2022-08-18 10:32:34
我重构了我的代码以使用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;
查看完整描述

1 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

从 中删除 中的额外参数。setState({ refreshing: true }, () => fetchNews())handleRefresh

也许还可以添加到效果中的依赖项数组中,以便它仅在更新时运行,除非您希望在组件呈现的任何时候进行提取。statestate


查看完整回答
反对 回复 2022-08-18
  • 1 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号