Javascript React检测提取的json文件中的数据是否与以前的数据一起更改
我正在用React和JSON API为最新数据构建一个加密币应用程序。我使用fetch加载JSON API,并使用setInterval每隔10秒重新启动一次应用程序 是否有方法将以前的数据与新数据进行比较 例如,如果一个值是3456,而新值是3458,我想将旧数据与新数据进行比较,并使用一个向上箭头图标,或者将该值设置为绿色。如果新数据为3454,则显示红色。当然,我可以用CSS来实现这一点。我不能比较新旧数据之间的差异 到目前为止,我的代码是:Javascript React检测提取的json文件中的数据是否与以前的数据一起更改,javascript,json,reactjs,fetch,Javascript,Json,Reactjs,Fetch,我正在用React和JSON API为最新数据构建一个加密币应用程序。我使用fetch加载JSON API,并使用setInterval每隔10秒重新启动一次应用程序 是否有方法将以前的数据与新数据进行比较 例如,如果一个值是3456,而新值是3458,我想将旧数据与新数据进行比较,并使用一个向上箭头图标,或者将该值设置为绿色。如果新数据为3454,则显示红色。当然,我可以用CSS来实现这一点。我不能比较新旧数据之间的差异 到目前为止,我的代码是: GetCryptoData() { l
GetCryptoData() {
let dataURL = this.props.coinUrl;
fetch(dataURL)
.then(res => res.json())
.then(res => {
this.setState({
item: res
})
})
componentDidMount(nextState) {
this.GetCryptoData();
setInterval(this.GetCryptoData.bind(this), 10000);
};
}
react中的最佳方法是将收到的信息添加到Redux状态,然后在组件中执行以下操作:
...
componentWillReceiveProps(nextProps) {
if(this.props.data !== nextProps.data) {
// Do something - data as been changed
}
}
...
希望能有帮助。
如果你需要更多的细节,请告诉我。
另外,选中您可以在
setState
.then(res => {
// Compare here
if (this.state.item !== res) {
this.setState({ item: res })
}
}
我没有使用Redux来存储数据,这有必要吗?@Ron嗯,为了像我建议的那样解决它,我会说是的。我会试着考虑其他方法,然后再给你回复。Redux是存储和管理应用程序状态的一种非常好的方法。在我看来,它真的可以帮助像你正在尝试建立的应用程序。老实说,为什么不用它呢。没有考虑过Redux或Flux之类的方法来存储数据,但似乎是合法的。我将尝试并更新我的解决方案。我不推荐这种方法。ComponentWillReceiveProps在组件接收到props时会真正扰乱数据流,这可能是一个性能问题。此外,上面的相等性检查将始终为false,因为您无法在Javascript中比较2个对象,因为对象是通过内存引用而不是值进行比较的。你可以1。比较现有状态下的值,然后按照下面的答案进行设置。或2。将回调函数传递给setState,它接受prevState作为参数,并呈现向上或向下箭头。@nitishphase好的,这同样取决于你的应用程序bro。我可以告诉你,在过去的一年里,我在一个大型制作应用程序中用这种方式做了很多工作,我和我的团队发现这是最方便的方式!(使用react生命周期函数)。在使用react+redux时,我非常乐意向您学习任何其他方法。请与我们分享。谢谢