【问题标题】:React Nat Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your applicationReact Nat 警告:无法对未安装的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏
【发布时间】:2021-08-09 13:24:49
【问题描述】:

警告:无法对未安装的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要解决此问题,请在 useEffect 清理函数中取消所有订阅和异步任务。

当我尝试从 firebase 获取一些数据时收到此警告,该应用可以运行,但我只是收到警告,这是我的代码:

 const [MeasuresList, setMeasuresList] = useState()


    useEffect(()=> {
        getData()
    })

    function getData(){
        getMeasures(MeasuresRetrived)
    }

    function MeasuresRetrived(MeasuresList){
        setMeasuresList(MeasuresList)
    }


    return (
        
        <View style={styles.content}>
            <Text title semi center>{route.params.muscle}</Text>
            <View style={{height: 20 }}/>
                     <FlatList style={styles.flatList}
                        data = {MeasuresList}
                        keyExtractor={(item) => item.id}
                        renderItem={({ item }) => 
                        <ExList list={item}/>
                        }
                    />
 
        </View>

这是我的 getMeasures:

export async function getMeasures(measureRetrived){
    var measuresList = []
    var snapshot = await firebase
                            .firestore()
                            .collection("Measures")   
                            .get()
    snapshot.forEach((doc) => {
        const measureDoc = doc.data()
        measureDoc.id = doc.id
        measuresList.push(measureDoc)
    })
    measureRetrived(measuresList)
}

我该如何解决?

【问题讨论】:

  • 你的useEffect 没有依赖数组,你应该从那里开始。

标签: reactjs firebase native


【解决方案1】:

您的代码有一些内存泄漏,您必须通过提供依赖项来使用 useEffect 钩子,在这种情况下是带有 [] 的空依赖项。

useEffect(()=> {
    getData()
}, [])

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 2020-06-27
    • 2019-12-31
    • 2020-09-18
    • 2021-05-14
    • 2020-01-24
    • 2021-06-29
    • 2021-11-25
    • 2021-12-09
    相关资源
    最近更新 更多