Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React检测提取的json文件中的数据是否与以前的数据一起更改_Javascript_Json_Reactjs_Fetch - Fatal编程技术网

Javascript React检测提取的json文件中的数据是否与以前的数据一起更改

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

我正在用React和JSON API为最新数据构建一个加密币应用程序。我使用fetch加载JSON API,并使用setInterval每隔10秒重新启动一次应用程序

是否有方法将以前的数据与新数据进行比较

例如,如果一个值是3456,而新值是3458,我想将旧数据与新数据进行比较,并使用一个向上箭头图标,或者将该值设置为绿色。如果新数据为3454,则显示红色。当然,我可以用CSS来实现这一点。我不能比较新旧数据之间的差异

到目前为止,我的代码是:

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时,我非常乐意向您学习任何其他方法。请与我们分享。谢谢