Javascript 异步JS方法不返回从哈希中选择的值

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

我试图从JSON响应中获取值,然后在axios get请求中使用它。我收到的是一个乱码字符串,而不是来自userData对象的令牌。如何通过函数返回令牌,并将其传递回axios字符串?问题似乎围绕着返回函数不返回用户['access-token']

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中获取的,是吗?你需要调用函数并传递参数。这种方法对我有效,谢谢。。