Javascript 异步JS方法不返回从哈希中选择的值
我试图从JSON响应中获取值,然后在axios get请求中使用它。我收到的是一个乱码字符串,而不是来自userData对象的令牌。如何通过函数返回令牌,并将其传递回axios字符串?问题似乎围绕着返回函数不返回用户['access-token']Javascript 异步JS方法不返回从哈希中选择的值,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我试图从JSON响应中获取值,然后在axios get请求中使用它。我收到的是一个乱码字符串,而不是来自userData对象的令牌。如何通过函数返回令牌,并将其传递回axios字符串?问题似乎围绕着返回函数不返回用户['access-token'] componentDidMount() { // console.log("Hello Mounted UserProfile Card!" + this.getToken()) axios
componentDidMount() {
// console.log("Hello Mounted UserProfile Card!" + this.getToken())
axios
.get(`http://127.0.0.1:3000/api/v1/user_profile/${this.getToken}`)
.then(response => {
this.setState({user: response.data});
console.log("api response " + response.data)
})
.catch(function(error) {
console.log(error);
});
}
async getToken(user) {
try {
let userData = await AsyncStorage.getItem("userData");
let data = JSON.parse(userData);
let user = JSON.parse(data)
return user["access-token"].toString();
} catch(error) {
console.log("Something went wrong", error);
}
}
这个代码看起来是错的。getToken方法未调用,在此方法中,您未使用param user。我不是反应专家,但我认为这是可行的
async componentDidMount() {
// console.log("Hello Mounted UserProfile Card!" + this.getToken())
try {
const token = await this.getToken();
if (token) {
const response = await axios.get(`http://127.0.0.1:3000/api/v1/user_profile/${token}`);
this.setState({user: response.data});
console.log("api response " + response.data)
} else { throw 'token not found'; }
} catch (ex) { console.log(ex); }
}
async getToken() {
try {
let userData = await AsyncStorage.getItem("userData");
let data = JSON.parse(userData);
let user = JSON.parse(data)
return user["access-token"].toString();
} catch(error) {
console.log("Something went wrong", error);
return null;
}
}
您正在将this.getToken传递给axios.get…,其中this.getToken是返回承诺而不是实际令牌的方法
您可以首先解析getToken承诺,然后调用axios GET请求
组件安装{
这是盖顿
.thentoken=>axios.get`http://127.0.0.1:3000/api/v1/user_profile/${token}`
.thenresponse=>{
this.setState{user:response.data};
log`API响应:${response.data}`;
}
.catcherror=>{
控制台错误;
};
}
异步getToken{
const userData=await AsyncStorage.getItemuserData;
const data=JSON.parseuserData;
const user=JSON.parsedata
返回用户[access token].toString;
}
由于将函数而不是字符串传递到get中,因此不会得到令牌字符串。然而,对于你将如何处理这件事,有些事情似乎是一个失误。我认为用户的ID应该是你在URL中传递然后从params中获取的,是吗?你需要调用函数并传递参数。这种方法对我有效,谢谢。。