有很多方法可以實現這一點,這取決於您如何從服務器獲取數據以及使用什麼庫來繪製數據。我會盡可能給出一個答案的通用答案。
假設您有一個名爲getXAxisValueFromServer
的函數,它將異步請求您的服務器所需的值,並在回調中將其返回。 (假定你的應用程序定期地從服務器查詢數據,如果你的應用程序是被動的並且通過類似於Rx.js observable的東西從服務器接收數據,邏輯將是相同的,但是你會把它放在可觀測數據回調中)
爲了讓你的組件動態渲染,你需要在新值到達時重新渲染你的組件。
React組件重新呈現under exactly two conditions: when its state
changes, and when its props
change。
因此,爲了讓您的組件動態更新,您需要將數據綁定到它的state
或其props
。
一般來說,使用React時,it's a good idea to keep presentation separated from logic。所以最好的方法是創建一個「智能」容器組件,它接收來自服務器的數據並將該數據保存在其state
中,以及一個呈現接收到的數據的「啞巴」呈現組件。我們假設我們有一張圖表,它正確繪製了數據實現的Chart
組件,該組件接收到名爲data
的道具。現在,我們想實現一個ChartContainer
將定期查詢的數據服務器和更新Chart
:
import React, { Component } from 'react';
import { getXAxisValueFromServer } from './server-api';
import Chart from './chart';
export default class ChartContainer extends Component {
constructor(props) {
super(props);
this.state = { data: null };
this.intervalHandle = null;
}
componentDidMount() {
this.intervalHandle = setInterval(() =>
getXAxisValueFromServer((data) => this.setState({ data })),
3000); //this is just an example - here we try to update
//the data every 3 seconds
}
render() {
return (
<Chart data={this.state.data} />
);
}
}
所以在這裏,我們已經創建了一個例子容器,將查詢服務器的新數據,每3秒更新圖表與服務器返回時收到的數據。你應該能夠適應你的用例。
歡迎來到stackoverflow,你可以發佈你正在使用的圖形庫和/或你目前如何繪製它?我認爲這對每個人都更有幫助。 –
嘿,那裏,謝謝你的熱烈歡迎。我使用Victory-Native進行繪圖。 – Davezor