Reactjs 如何使用React Native中的only if语句返回useEffect

Reactjs 如何使用React Native中的only if语句返回useEffect,reactjs,react-native,react-hooks,use-effect,Reactjs,React Native,React Hooks,Use Effect,当我在页面中输入时,我使用useffect来定义变量值,但有时会收到以下警告: 警告:无法对已卸载的组件执行React状态更新。 这是一个no-op,但它表示应用程序中存在内存泄漏。 若要修复,请取消useEffect中的所有订阅和异步任务 清理功能 以下是我的useEffect函数代码: useEffect(() => { if(hierarchy == '1'){ setJob('Investigador') }

当我在页面中输入时,我使用useffect来定义变量值,但有时会收到以下警告:

警告:无法对已卸载的组件执行React状态更新。 这是一个no-op,但它表示应用程序中存在内存泄漏。 若要修复,请取消useEffect中的所有订阅和异步任务 清理功能

以下是我的useEffect函数代码:

useEffect(() => {
        if(hierarchy == '1'){
            setJob('Investigador')
        }
        if(hierarchy == '2'){
            setJob('Administrador')
        }
        if(hierarchy == '0'){
            setJob('Novo Utilizador')
        }
}, [])

我知道我应该在函数中返回一些东西来清理它,但由于我只使用if而不是const,我如何才能返回以避免出现此错误?

在应用程序中设置状态时,应该使用清理函数。 考虑使用<代码>安装的变量,以判断它是否应该跳过对SETSATE的调用或否。

    import React, { useEffect, useState, useRef } from "react";
    
    //inside component:
    const mounted = useRef(true);
    useEffect(() => {
    mounted.current = true;
     if (mounted.current) {
            if(hierarchy == '1'){
                setJob('Investigador')
            }
            if(hierarchy == '2'){
                setJob('Administrador')
            }
            if(hierarchy == '0'){
                setJob('Novo Utilizador')
            }
    }
     return () => (mounted.current = false);
    }, [])

我可以像这样用在每一个类似的useEffect函数上吗?是的,你可以用这个!请查看更新的答案。我忘记添加
if(mounted.current){}