您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“ant design charts怎么獲取后端接口數據展示”,內容詳細,步驟清晰,細節處理妥當,希望這篇“ant design charts怎么獲取后端接口數據展示”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
今天在做項目的時候遇到幾個讓我很頭疼的問題,一個是通過后端接口成功訪問并又返回數據,但拿不到數據值。其二是直接修改state中的data,console中數組發生變化但任然數據未顯示。
import React, { useState, useEffect } from 'react'; import { Line } from '@ant-design/plots'; import { PageContainer } from '@ant-design/pro-layout'; import ProForm, { ProFormDateRangePicker } from '@ant-design/pro-form'; import queryString from 'qs'; const DemoLine = () => { const [data, setData] = useState([]); useEffect(() => { asyncFetch(); }, []); var obj=[] var pre=[] const asyncFetch = () => { fetch('/api/v1.0/inquireRepairsAnalysisNumberListTenant.json',{ method: 'POST', body:new URLSearchParams(queryString.stringify({ sessionUuid: window.localStorage.getItem('sid') , startDate: '2021-12-01', endDate: '2022-05-30', }, { indices: false })) }) .then(response=>response.json())//將respose轉成json格式數據以便可以訪問讀取 .then(response=>{ obj=response.datas[0];//獲取json數據中的data部分,并對其開始進行處理 console.log(obj) for(var i = 0; i < obj.typeNameList.length;i++){ for(var j=0;j<obj.monthList.length-1;j++){ pre.push({ monthList:obj.monthList[j], monthNumberList:obj.monthNumberList[j].numberList[i], typeNameList:obj.typeNameList[i], }) } } setData(pre) } ) .catch((error) => { console.log('fetch data failed', error); }); }; console.log(data,data.length) const config = { data, xField: 'monthList', yField: 'monthNumberList', seriesField: 'typeNameList', yAxis: { }, legend: { position: 'top', }, smooth: true, // @TODO 后續會換一種動畫方式 animation: { appear: { animation: 'path-in', duration: 5000, }, }, }; return ( <PageContainer> <ProForm initialValues={{ dateRange: [Date.now(), Date.now() - 1000 * 60 * 60 * 24], }} > <ProForm.Group title="日期區間選擇"> <ProFormDateRangePicker name="dateRange" /> </ProForm.Group> </ProForm> <Line {...config} /> </PageContainer> ) }; export default DemoLine;
通過接口獲取到數據后,一直為response形式,處理很久,最后通過 .then(response=>response.json())//將respose轉成json格式,但我們任然取不到PromiseResult中的內容,需要再次通過then方法
此時數據為json格式,為了取到json中的datas還需再 obj=response.datas[0];//獲取json數據中的data部分,并對其開始進行處理
.then(response=>{ obj=response.datas[0];//獲取json數據中的data部分,并對其開始進行處理 console.log(obj,'obj')
我們將取到的數據存在obj數組中
之后再對數據進行操作,由于我這邊的用的多折線圖,ant design charts中 他所需要的數據格式是數組內以對象的形式放單個數據,如圖
所以我們需要對取到的obj數據數據進行處理,轉換為對應的數據形式。pre為暫存數據數組。
for(var i = 0; i < obj.typeNameList.length;i++){ for(var j=0;j<obj.monthList.length-1;j++){ pre.push({ monthList:obj.monthList[j], monthNumberList:obj.monthNumberList[j].numberList[i], typeNameList:obj.typeNameList[i], }) } }
將我們的數據轉換后通過usestate修改到data中
setData(pre)
通過設置折線圖的對應屬性
const config = { data,//簡寫data:data xField: 'monthList', yField: 'monthNumberList', seriesField: 'typeNameList', yAxis: { }, legend: { position: 'top', }, smooth: true, // @TODO 后續會換一種動畫方式 animation: { appear: { animation: 'path-in', duration: 5000, }, }, };
最終效果
讀到這里,這篇“ant design charts怎么獲取后端接口數據展示”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。