[問題] React中接收遠端資料使用D3畫圖的問題

作者: FrankYoshi (作別人生命中的天使!)   2019-08-29 15:00:14
版上的前輩們大大好
想請教一個關於在React中接收遠端資料使用D3畫圖的問題
目標:
製作一個頁面,利用axios從遠端API接收資料
再透過D3繪製出長條圖顯示
程式:
首先我先寫了一個組件 BarChart.js
並在生命週期函數componentDidMount()中
利用axios.get()透過API接收遠端資料
取得資料後進到drawChart()中進行D3圖像繪製
BarChart.js https://imgur.com/pbLBQog
這部分可以順利執行 https://imgur.com/V1Q29cT
接著我想要將接收資料與圖面繪製進行拆分
父組件App.js接收資料,再透過props傳遞給子組件BarChart.js
目前是想在父元素利用asiox接收遠端資料
再透過props傳送給子元素進行D3圖像繪製
流程:
1. 父元素接收資料
2. 利用setStaet()傳送給state
3. 在子組件中的props接收新的state值(遠端資料)
4. 傳送給子組件
5. 在子組件中進行繪圖
App.js https://imgur.com/bRlWAKt
BarChart.js https://imgur.com/hbHglZ5
不過這邊出了一點問題
就是我的父元素雖然收到遠端傳來的資料
但是似乎無法如預期的把新的state值傳送給子組件進行繪圖
我猜想是父元素中的axios所放之生命週期函數位置所影響
不過試了很多方式,包在不同的生命週期函數
還是無法正常傳遞資料到子組件(BarChart.js)裡面
不知各位前輩對於這樣的狀況
可否提供一些指點
感謝~^^
作者: powyo (光子郎)   2019-08-29 16:54:00
ajax取完值後要bind(this)https://i.imgur.com/XBwFOR8.png
作者: FrankYoshi (作別人生命中的天使!)   2019-08-29 18:43:00
已解決,子組件需要使用ComponentDidUpdate()

Links booklink

Contact Us: admin [ a t ] ucptt.com