Как я могу получить данные из URL-адреса API в мою круговую диаграмму reactgoogle в reactjs

Здесь я хочу получить данные из URL-адреса REST API, которые будут загружены в круговую диаграмму, а не вручную вводить данные, как показано на круговой диаграмме ниже.

URL-адрес API будет иметь ответ в формате JSON.

бывший:
[{"Этап разработки: 1," № проекта: 60}, {"Этап разработки: 2", № проекта: 50}]

Я хочу отображать данные на основе JSON.

                     <Chart
                                  width = {'450px'}
                                  height = {'310px'}
                                  chartType = "PieChart"
                                  loader = {<div>Loading Chart</div>}
                                  data = {[
                                    ['Development Stages', 'Number of Project'],
                                    ['Stage 1', 60 ],
                                    ['Stage 2',40],
                                    ['Stage 3',20 ],
                                    ['Stage 4',10],
                                    ['Stage 5', 30],
                                  ]}
                                  options = {{
                                    title: 'Projects',
                                  }}
                                  rootProps = {{ 'data-testid': '1' }}
                    />

Как я могу использовать асинхронные аксиомы для того же ???? и передайте его в диаграмму.

                const [stage,setStage]=useState([]);
                const getStageData = async() => {
              try{

            const data=await axios.get(APIurl
           );

        setStage(data.data)
        }
        catch(e){


        }
    };

    useEffect(()=> {
        getStageData();
    },[]);

Как я могу получить данные из URL-адреса API в мою круговую диаграмму reactgoogle в reactjs

Как я могу получить данные из URL-адреса API в мою круговую диаграмму reactgoogle в reactjs

Вы используете библиотеку chart.js?

ksa 30.03.2021 13:37

Я использую библиотеку диаграмм reactgoogle

Amit 31.03.2021 09:19

@ksa, можешь мне помочь?

Amit 31.03.2021 09:38

пожалуйста, войдите в консоль "stage" и дайте мне знать, что вы видите? поделитесь этим выводом здесь.

ksa 31.03.2021 12:00

@ksa Да, я отредактировал сообщение, вы можете увидеть изображения журнала там. Я думаю, что переменная stage пуста.

Amit 31.03.2021 12:38

ты уверен, что он пустой? если да, то убедитесь, что у сцены есть ответ JSON, который вы упомянули выше. что вы видите, когда консоль журнала "data.data"? это пусто? если он не пуст, выполните setStage (... stage, data.data), а затем в компоненте диаграммы сделайте data = {[stage]}. Не уверен, что это поможет вам, но попробуйте.

ksa 31.03.2021 12:56

setStage (.data.data), здесь нет необходимости в операторе распространения.

ksa 31.03.2021 13:08

@ksa Чтобы преобразовать мой массив объектов в массивы, я использовал карту (Object.values) в качестве решения, приведенного ниже, а затем после того, как диаграмма принимает соответствующий формат данных. Если я не конвертирую в массив с помощью карты, setStage (data.data) дает мне объект json. Но для отображения в формате массива мне нужно использовать карту, но ее применение дает мне пустой setStage ()

Amit 31.03.2021 13:19

@ksa const [этап, setStage] = useState ([]); const getStageData = async () => {попробуйте {const data1 = await axios.get ("url"); setStage (data1.data); } catch (e) {}}; useEffect (() => {getStageData ();}, []); stage.map (Object.values) Вот как выглядит мой код, и, возможно, это ... stage

Amit 31.03.2021 13:34

Пожалуйста, поправьте меня, если я ошибаюсь. Из вашего кода я вижу, что вы сначала установили ответ axios (setStage (data1.data)), а затем вы конвертируете в массивы, используя stage. карта (Объект. значения). Попробуйте сначала сопоставить, а затем установите состояние и посмотрите. что-то вроде этого const res = data1.data.map (obejct.values), а затем setStage (res).

ksa 31.03.2021 13:52

@ksa да, я пробовал с моим решением, данные загружались в значительной степени так же, как вы сказали. Еще раз спасибо, так как я новичок в реакции и знаю только основы javascript, я застрял на нем, еще раз спасибо !!!

Amit 31.03.2021 14:06

Не волнуйтесь. Работает?

ksa 31.03.2021 14:10

@ksa Да, это так. !!

Amit 31.03.2021 14:17

Я отправил это как ответ. Пожалуйста, примите это. Спасибо.

ksa 31.03.2021 14:23
Поведение ключевого слова "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
14
79
4

Ответы 4

<Chart width = {'450px'} height = {'310px'} chartType = "PieChart" loader = {Loading Chart} data = {[['Этапы разработки', 'Количество проектов'], ... этап]} options = {{title: 'Projects',}} rootProps = {{'data-testid': '1'}} />

После этого круговая диаграмма также становится пустой.

Amit 30.03.2021 13:55

Итак, данные, которые вы должны передать на круговую диаграмму, должны быть массивом массивов (в зависимости от библиотеки, которую вы используете). Данные вашего ответа выглядят как массив объектов.

  1. Преобразуйте ваши данные в массив массивов.
    setStage(reponse.data.map(Object.values));
  1. Передайте эти данные в круговую диаграмму.
    <Chart
       ...otherProps
       data = {[
         ['Development Stages', 'Number of Project'], 
         ...data
       ]}
    />

Здесь этап преобразуется в массив массива, но с помощью оператора распространения он не отображается на графике.

Amit 31.03.2021 11:57

Из вашего кода я вижу, что вы сначала установили ответ axios (setStage(data1.data)), а затем вы конвертируете в массивы с помощью stage.map(Object. values). Попробуйте сначала сопоставить, а затем установите состояние и посмотрите. что-то вроде этого const res = data1.data.map(obejct.values), а затем setStage(res).

Полный рабочий код для использования response-google Piechart вместе с вызовом данных rest api

         const [stage,setStage]=useState([]);
         const getStageData = async() => 
        {
             try{

                 const data1=await axios.get("REST_API");

                //converting array of objects into array
                 const res=data1.data.map(Object.values);

                //setting it to stage variable
                setStage(res);  
        }
               catch(e){}  

         }; 
          useEffect(()=> {
                         getStageData();
                            },[]);

    <Chart
         width = {'500px'}
         height = {'310px'}
         chartType = "PieChart"
        loader = {<div>Loading Chart</div>}
        data = {[
               ["COLUMN_NAME_1","COLUMN_NAME_2"],
               ...stage
            ]}
       options = {{ 
                 title: 'Ongoing Projects Development Stage',                                                                               
               }}
        rootProps = {{ 'data-testid': '1'}} 
     />
            
                                   
                            

                                        

                                                       

                                            
                            
                                          
                                          



                          

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