【问题标题】:React native, problem with connecting to API反应原生,连接到 API 的问题
【发布时间】:2022-11-01 16:32:29
【问题描述】:

我正在尝试连接到我的 API,例如,当我想登录用户时,我需要对 fetch 或 XMLHttpRequest 的文件进行任何更改,然后我需要保存并且现在登录完美工作......我有fetchXMLHttpRequest 也有同样的问题,顺便说一句,当我的笔记本电脑有不同的 IP 时,我需要再次这样做......这很奇怪。

这是我的代码:

login.ts

export function login(email: string, password: string) {
    const data = {
      username: email,
      password: password,
    };
    console.log("Attempt to login: ", data);

    let xhr = new XMLHttpRequest();

    xhr.open("POST", `${API}/login`);
    xhr.setRequestHeader("content-type", ContentType.APPLICATION_URLENCODED);
    xhr.send(encodeBody(data));

    xhr.onreadystatechange = async function () {
      if (xhr.readyState == XMLHttpRequest.DONE) {
        const data = JSON.parse(xhr.responseText);
        await AsyncStorage.setItem("token", data.token);
        navigate('Home');
      }
    };
    xhr.onerror = function (e) {
        console.error(e.target);
    }
}

Login.tsx

   <LoginButton title="Login" onPress={() => login(email, password)} />

我尝试更改调用 API 的方法并且没有发生任何更改,还尝试在与组件相同的文件中执行请求,但没有任何更改。

【问题讨论】:

    标签: javascript reactjs typescript react-native


    【解决方案1】:

    尝试更改您的login.ts

    export function login(email: string, password: string) {
      const data = {
        username: email,
        password: password,
      };
    
      let formBody = [];
      for (let property in data) {
        let encodedKey = encodeURIComponent(property);
        let encodedValue = encodeURIComponent(data[property]);
        formBody.push(encodedKey + "=" + encodedValue);
      }
      formBody = formBody.join("&");
    
      return fetch(`${API}/login`, {
        method: "POST",
        headers: {
          "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
        },
        body: formBody,
      })
        .then((result) => {
          console.log(result);
          // processing result
        })
        .catch((error) => {
          // processing error
          console.log(error);
        });
    }
    

    【讨论】:

    • 是的,我就是这样, encodeBody() 函数这样做,你改变了什么
    • 你能收到任何回应/错误吗?
    【解决方案2】:

    我找到了一个解决方案或更确切地说是问题,我正在使用的环境变量库没有按我的预期加载环境文件。

    我用了反应原生 dotenv

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      相关资源
      最近更新 更多