有很多方法可以实现这一点,这取决于您如何从服务器获取数据以及使用什么库来绘制数据。我会尽可能给出一个答案的通用答案。
假设您有一个名为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