【发布时间】:2021-04-02 20:20:37
【问题描述】:
您好,我正在制作一个反应原生应用程序。这是我的第一个 react-native 项目和第二个使用 react 的项目。无论如何,我在我的 react native 项目中遇到了这个错误。我正在发布我的模块,请帮助我。
所以这是我的模块,它将个人资料图片上传到我的快递服务器。
const updateProfilePicture = image => {
try {
console.log("Update profile picture hit");
const { user: token } = useAuth();
console.log(`Token received: ${token}`);
const data = new FormData();
console.log(image);
let fileName = image.split("/");
fileName = fileName[fileName.length-1]
console.log(`File name: ${fileName}`)
let extensionName = fileName.split(".");
extensionName = extensionName[extensionName.length-1];
console.log(`Extension name: ${extensionName}`)
data.append('token', token);
data.append('pimage', {
name: Random.getRandomBytes(8).toString('hex')+"."+extensionName,
type: 'image/'+extensionName,
uri: image
});
console.log(`This is the data\n`+data);
return authClient.post(endpointUpdatePicture, data);
} catch(error) {
console.log("Error in update profile picture", error);
}
};
从 hit and try 我发现 const { user: token } = useAuth(); 行出错了。
在继续之前,useAuth() 是我用于跟踪用户的自定义挂钩。 user 实际上是一个 jwt 令牌。
这是我的 useAuth()
import { useContext } from 'react';
import authStorage from './storage';
import AuthContext from './context';
import jwt from 'jwt-decode';
export default useAuth = () => {
const {user, setUser} = useContext(AuthContext);
const { name, rating, number, uri } = jwt(user);
const logout = () => {
setUser(null);
authStorage.removeToken();
}
console.log(`Uri: ${uri}`);
return { user, setUser, logout, name, rating, number, uri };
}
现在我在我的 App.js 中创建了一个上下文,从那里我得到这个用户和 setUser 基本上是令牌。写这行代码给我带来了钩子错误。
请通过两种方式帮助我:
- 请告诉我为什么会发生此错误,因为正如您所见,我没有违反任何挂钩法。
- 如果我做得对,请告诉我。
【问题讨论】:
-
把你的钩子放在试试{}
-
做到了。同样的错误。
标签: javascript reactjs react-native react-hooks