亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

確保 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 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號