Добавьте диаграмму Axios в React и возьмите данные JSON

В настоящее время я практикую React и привыкаю к ​​диаграммам.

У меня были трудные времена при использовании диаграммы React и вызове Axios для получения информации из онлайн-файла JSON.

Он отлично работает с предварительно запрограммированными значениями, но при вызове с помощью Axios не дает результата.

У меня есть сомнения относительно того, как правильно применить Axios к существующему коду! Любая помощь очень ценится.

 import React, { Component } from "react";
 import { Doughnut } from "react-chartjs-2";
 import axios from "axios";

 const headingStyle = {
  "text-align": "center"
  };

  const data = {
  labels: ["In", "out", "Balance"],
 datasets: [
 {
 //   data: [300, 100, 200],
  backgroundColor: ["#27DD73", "#FF2400", "#36A2EB"],
  hoverBackgroundColor: ["#27DD73", "#FF2400", "#36A2EB"]
  }
    ]
  };



 class DoughnutExample extends Component {
 async componentDidMount() {
    const { data: users } = await axios.get(
      "https://api.myjson.com/bins/bw0u4"
    );
    this.setState({ users });
  }
 render() {
 return (
  <div className = "card card-1" style = {{ padding: "10px" }}>
    <h3 style = {headingStyle}>Cash Flow</h3>
    <Doughnut data = {data} />
  </div>
 );
   }
 }

export default DoughnutExample;

Мой файл JSON находится здесь: https://api.myjson.com/bins/bw0u4

Я хочу взять данные "диаграммы" из JSON.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
1 017
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В data нет переменной render. Поскольку ответ сохраняется в состоянии, его следует использовать соответствующим образом:

<Doughnut data = {this.state.users} />

Если намерение состоит в том, чтобы получить ключ chart из элементов массива, массив должен быть переназначен:

this.setState({ users: users.map(({ chart }) => chart) });

Кроме того, есть нет проблем с этим фрагментом.

Эй, Эстус, спасибо за помощь. Я попробовал «this.state.users», но получил ошибку «Невозможно прочитать свойство« пользователи »нуля». Любая информация о том, что могло пойти не так?

Pranoy Mathew 06.02.2019 08:48

Если вы не присвоили this.state нулевое значение, ошибка, вероятно, относится к другому фрагменту кода, например. Ответ JSON, если он отличается от того, что вы показали.

Estus Flask 06.02.2019 08:55

Я использовал точный фрагмент кода, как показано выше. Таким образом, состояние не присваивается с нулевым значением. Тот же json тоже. Я проверил фрагмент кода, на который вы дали ссылку в stackblitz. Он получает данные из json, но я пытался просто показать значение «диаграммы» из json в виде диаграммы пончиков из «реакции cahrt js».

Pranoy Mathew 06.02.2019 09:08

У вас нет начального состояния в исходном коде, state = {}. Это будет нуль. Думаю, в этом проблема.

Estus Flask 06.02.2019 09:16

Эстус! Спасибо вам за помощь.

Pranoy Mathew 06.02.2019 09:43

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