React ax ios response. json не является функцией - PullRequest
0 голосов
/ 19 июня 2020

Я продолжаю получать сообщение об ошибке в этом ответе. json не является функцией с моими данными запроса ax ios. Я не уверен, почему, поскольку этот код работал два дня go ... Я пробовал возиться с обещаниями, чтобы увидеть, будет ли это иметь значение, но, похоже, нет. Код ниже, и любая помощь очень ценится

import React, { Component } from 'react'
import TrackingRender from '../TrackingRender/TrackingRender'
import axios from 'axios'
import { Redirect } from 'react-router';


export class OrderTracking extends Component {
    constructor() {
        super()
        this.state = {
            loadingData: true,
            order: []
        }
    }
    async componentDidMount() {
        this._isMounted = true;
        if (this.state.loadingData) {
            try {
                const { id } = this.props.match.params
                const response = await axios.get(`http://localhost:5000/api/orders/${id}`)
                const data = await response.json()
                this.setState({
                    order: data,
                    loadingData: false
                })
                console.log(this.state)
            } catch (err) {
                console.log(err)
            }
        }

    }
    render() {
        if (!this.state.loadingData) {
            return (
                <div>
                    < TrackingRender order={this.state.order} />
                </div>
            )
        } else {
            return (
                <Redirect to='/orders' />
            )
        }

    }
}

export default OrderTracking


Ответы [ 3 ]

1 голос
/ 19 июня 2020

С Ax ios вам не нужно запускать response.json(), вы просто получите необработанный ответ как есть.

Данные должны быть доступны в response.data

0 голосов
/ 19 июня 2020

Вам не нужно звонить .json() при ответе axios. Это уже проанализировано. Вы можете получить значение тела ответа из response.data.

const response = await axios.get(`http://localhost:5000/api/orders/${id}`)

this.setState({
   order: response.data,
   loadingData: false
})
0 голосов
/ 19 июня 2020

Чтобы получить данные из axios, вам нужно использовать response.data

async componentDidMount() {
        this._isMounted = true;
        if (this.state.loadingData) {
            try {
                const { id } = this.props.match.params
                const response = await axios.get(`http://localhost:5000/api/orders/${id}`)
                const data = await response.data
                this.setState({
                    order: data,
                    loadingData: false
                })
                console.log(this.state)
            } catch (err) {
                console.log(err)
            }
        }

    }
...