React Native 我正在尝试注销,我正在使用AsynStorage包持久化数据,注销正在工作,但我得到了警告.我不知道如何解决这个问题,

krcsximq  于 2023-04-12  发布在  React
关注(0)|答案(2)|浏览(157)

日志删除项目时出错:错误:无效的钩子调用。只能在函数组件的主体内部调用钩子。这可能是由于以下原因之一:
1.你可能有不匹配的React版本和渲染器(比如React DOM)
1.你可能违反了钩的规则
1.您可能在同一个应用程序中有多个React副本,请参阅https://reactjs.org/link/invalid-hook-call了解有关如何调试和修复此问题的提示。
const login =(userEmail,userPasswd)=〉{

try {
        setLoading(true);
        axios.post(`${BASE_URL}/account/login`,
            { userEmail, userPasswd }
        ).then(res => {

            let userInfo = res.data;
            // console.log("Checkdata...", userInfo)    
            // if(res.status ==200) {
            setUserInfo(userInfo)
            AsyncStorage.setItem('userInfo', JSON.stringify(userInfo))
            setLoading(false)
            // }                 

        }).catch(e => {
            if (userEmail !== userEmail && userPasswd !== userPasswd) {
                setError(`login error ${e.res}`);
                setLoading(false)
                Toast.show('Email or Password not match.');
            }

        })

    } catch (error) {
        setLoading(false)
        console.error(error)
        Toast.show('Email or Password not match.');
    }

}
const logout = async () => {
    try {
        await AsyncStorage.removeItem('userInfo');
        setUserInfo({})
        useNavigate('Login')
    } catch (error) {
        console.log(`Error removing item: ${error}`);
    }
};
qaxu7uf2

qaxu7uf21#

调用useNavigate的方法不能使用,可以这样使用

const navigation = useNavigate()

然后

const logout = async () => {
    try {
        await AsyncStorage.removeItem('userInfo');
        setUserInfo({})
       navigation.navigate('Login')
    } catch (error) {
        console.log(`Error removing item: ${error}`);
    }
};
au9on6nz

au9on6nz2#

注解后尝试使用注销函数中的导航(“登录”)行

相关问题