У меня есть файл под названием Server.js, в котором я написал родительский метод для получения и отправки запроса. Я пытаюсь извлечь несколько элементов из асинхронного хранилища в конструкторе и передать его методу, где я назначаю его другой переменной. Теперь я должен использовать эту переменную в моем методе get и post, но не могу получить доступ к новым переменным (которые объявлены внутри самого конструктора).
Эти новые инициализированные переменные доступны с помощью метода post, но не внутри метода get. Когда я попробовал какой-то другой обходной путь, он говорит, что все мои 3 переменные (ParticipantId, mobeToken, urlAsync не определены. Любые данные по моей вышеупомянутой проблеме.
переменные: 1. участникId: будет отправлено как атрибут заголовка (для аутентификации). 2. mobeToken: токен для аутентификации, отправляемый в запросе Get точно так же, как memberId. 3. urlAsync: это URL-адрес, по которому будут совершаться все вызовы. Как только он станет доступен внутри метода Get и Post, я удалю this.baseUrl из обоих запросов метода Get и Post.
import React, { Component } from "react";
import { Alert,AsyncStorage} from 'react-native';
import axios from "axios";
const DEV_ENV_URL = "http://www.aaa.com/api";
const STAGE_ENV_URL = "http://www.bbb.com/api";
const PROD_ENV_URL = "http://www.ccc.com/api";
export default class Server extends Component {
baseUrl = DEV_ENV_URL;
constructor(props) {
super(props);
mobeToken1 = "";
participantId1 = "";
urlAsync = "";
AsyncStorage.getItem("profile", (err, res) => {
if (res !== null) {
let profile = JSON.parse(res);
participantId = profile.participantId;
} else {
profile = "";
}
AsyncStorage.getItem("mobeToken", (err, mobeToken) => {
AsyncStorage.getItem("URL", (err, Url) => {
this.assignValues(participantId, mobeToken, Url);
});
});
});
}
assignValues(participantId, mobeToken, Url) {
participantId1 = participantId;
mobeToken1 = mobeToken;
urlAsync = Url;
console.info("mobeToken1 "+ mobeToken1 + "," + participantId1 +"," + urlAsync);
}
getRequest(url) {
// debugger;
console.info(mobeToken1); // need variables in this method but can't
return fetch(this.baseUrl + url , {
method: 'GET',
headers: {
}
})
.then(response => response.json())
.then(responseJson => {
console.info(responseJson);
return responseJson;
})
.catch(error => {
console.info(error);
Alert.alert("", "Network connection issue. Please contact support");
});
}
postRequest(url, jsonData) {
return fetch(this.baseUrl + url, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
// 'Content-Type': 'application/text',
"parse-array": "|entryJSONList|",
"mobeToken": mobeToken1,
"participantId": participantId1,
},
body: JSON.stringify(jsonData)
})
.then(response => response.json())
.then(responseJson => {
console.info(responseJson);
return responseJson;
})
.catch(error => {
console.info(error);
Alert.alert("", "Network connection issue. Please contact support");
});
}
}
Есть ли альтернативное решение для этого? Спасибо за просмотр или решение этой проблемы ....
Приведенная выше ссылка представляет собой подробное объяснение заголовка в API выборки ..... моя проблема, указанная выше, отличается. Пожалуйста, прочтите мое утверждение один раз, чтобы понять, на чем я застрял.
Я понимаю вашу ситуацию, но пробовал ли вы регистрировать значение консоли перед публикацией. Это ноль? Если нет, то я подумал, что это проблема с установкой пользовательского значения в заголовках.
Да, я пробовал это, и это было доступно в методе post .... вот почему я также сбит с толку, почему это изменение поведения для того же класса.
@digit Проблема решена ..... спасибо за беспокойство, приятель.





Попробуйте использовать интерфейс заголовков. Ссылка: developer.mozilla.org/en-US/docs/Web/API/Fetch_API/…