Получить элемент из asyncstorage в конструкторе и передать его другому методу - реагировать на собственный

У меня есть файл под названием 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");
      });
  }
}

Есть ли альтернативное решение для этого? Спасибо за просмотр или решение этой проблемы ....

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

digit 05.06.2018 10:19

Приведенная выше ссылка представляет собой подробное объяснение заголовка в API выборки ..... моя проблема, указанная выше, отличается. Пожалуйста, прочтите мое утверждение один раз, чтобы понять, на чем я застрял.

rohit kumar 05.06.2018 11:14

Я понимаю вашу ситуацию, но пробовал ли вы регистрировать значение консоли перед публикацией. Это ноль? Если нет, то я подумал, что это проблема с установкой пользовательского значения в заголовках.

digit 05.06.2018 14:02

Да, я пробовал это, и это было доступно в методе post .... вот почему я также сбит с толку, почему это изменение поведения для того же класса.

rohit kumar 05.06.2018 15:03

@digit Проблема решена ..... спасибо за беспокойство, приятель.

rohit kumar 06.06.2018 12:18
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
1
5
834
0

Другие вопросы по теме