[未处理的承诺拒绝:ReferenceError:电子邮件未定义]
当我尝试登录时出现此错误,请帮帮我
上下文身份验证:
import React, {
useState,
useEffect,
createContext,
useContext,
useCallback,
} from "react";
import AsyncStorage from "@react-native-async-storage/async-storage";
import api from "../services/api";
const AuthContext = createContext({ signed: false, user: {} });
const AuthProvider = ({ children }) => {
const [user, setUser] = useState({});
const [loading, setLoading] = useState(true);
useEffect(() => {
async function loadStorageData() {
const storageUser = await AsyncStorage.getItem("@MBAuth:user");
const storageToken = await AsyncStorage.getItem("@MBAuth:token");
if (storageUser && storageToken) {
setUser(JSON.parse(storageUser));
setLoading(false);
} else if (!storageUser && !storageToken) {
setLoading(false);
}
}
loadStorageData();
}, []);
const signIn = useCallback(async ({ email, password }) => {
const response = await api.post("/sessions", {
email,
password,
});
const { token, user } = response.data;
console.log(response);
await AsyncStorage.multiSet([
["@MBAuth:token", token],
["@MBAuth:user", JSON.stringify(user)],
]);
setUser({ token, user });
}, []);
const signOut = useCallback(async () => {
await AsyncStorage.multiRemove(["@MBAuth:user", "@MBAuth:token"]);
setUser({});
}, []);
return (
<AuthContext.Provider
value={{ signed: !!user, user, signIn, signOut, loading }}
>
{children}
</AuthContext.Provider>
);
};
function useAuth() {
const context = useContext(AuthContext);
if (!context) {
throw new Error("useAuth must be used within an AuthProvider");
}
return context;
}
export { AuthProvider, useAuth };
登录:
const handleSignIn = useCallback(
async (data) => {
try {
await signIn({
email: data.email,
password: data.password,
});
} catch (err) {
console.log(err);
}
},
[signIn]
);