Ax ios get response не переносится в состояние [Native React] - PullRequest
0 голосов
/ 01 апреля 2020

первый вопрос здесь.

, когда я пытаюсь запустить это, он извлекает данные в response.data, но эти данные не устанавливаются в состояние для передачи в качестве подпорки на другую страницу, и это всегда остается [объект объекта] или [неопределено], и я понятия не имею, что происходит

 state = {
    APiData: {},
    userInput: "cheese",
    onCall: false
}


findFood = () => {
    let self = this;
    let userInput = this.state.userInput.toLowerCase();
    let url = "https://api.spoonacular.com/recipes/search?query=" + userInput + "&number=1&apiKey="+apiKey;
    axios.get(url)
        .then(function (response) {
            console.log(response.data);  //get's data
            self.setState({APIdata: response.data});
        })
        .catch(function (error) {
            console.log(error)
        });
}

renderbody = () => {
    console.log(this.state.APIdata) //this thing, is undefined
       // return (<SearchBody data={this.state.APIdata} key={apiKey}/>)
}

это данные в response.data

  "baseUri": "https://spoonacular.com/recipeImages/",
  "expires": 1585843318293,
  "isStale": false,
  "number": 1,
  "offset": 0,
  "processingTimeMs": 437,
  "results": Array [
    Object {
      "id": 215435,
      "image": "three-cheese-pizza-for-cheese-lovers-215435.jpg",
      "imageUrls": Array [
        "three-cheese-pizza-for-cheese-lovers-215435.jpg",
      ],
      "readyInMinutes": 45,
      "servings": 8,
      "title": "Three-Cheese Pizza (For Cheese Lovers)",
    },
  ],
  "totalResults": 855,
}
Object {
  "baseUri": "https://spoonacular.com/recipeImages/",
  "expires": 1585843318293,
  "isStale": false,
  "number": 1,
  "offset": 0,
  "processingTimeMs": 437,
  "results": Array [
    Object {
      "id": 215435,
      "image": "three-cheese-pizza-for-cheese-lovers-215435.jpg",
      "imageUrls": Array [
        "three-cheese-pizza-for-cheese-lovers-215435.jpg",
      ],
      "readyInMinutes": 45,
      "servings": 8,
      "title": "Three-Cheese Pizza (For Cheese Lovers)",
    },
  ],
  "totalResults": 855,
}


1 Ответ

0 голосов
/ 01 апреля 2020

Вы не используете состояние. Ваше состояние должно быть внутри вашего конструктора

constructor(props) {
   super(props);
   this.state = {
       APiData: {},
       userInput: "cheese",
       onCall: false
   }
}

Затем вам просто нужно позвонить this.setState({ APIdata: response.data });

Я бы порекомендовал вам использовать реагировать-редукса , чтобы получить данные с использованием this.props.

...