Javascript 当处于状态的项不是集合时,在React中设置状态的正确方法

Javascript 当处于状态的项不是集合时,在React中设置状态的正确方法,javascript,reactjs,Javascript,Reactjs,我正在处理股票和贵金属价格等实时金融数据。我每隔几秒钟点击一次API,获取给定资产的最新价格,并将该价格存储在状态中。然而,我总是用一个数组或一组对象来更新状态,但这些数据只是一个字符串。如果最新的GET请求返回的值与当前设置的值不同,则覆盖该值 我只是想知道在状态中更新简单字符串的最佳实践是什么 我的状态构造函数: this.state = { goldPrice: '', items: {} } 我的API请求: fetchGoldPrice() { jQuery.ajax({

我正在处理股票和贵金属价格等实时金融数据。我每隔几秒钟点击一次API,获取给定资产的最新价格,并将该价格存储在状态中。然而,我总是用一个数组或一组对象来更新状态,但这些数据只是一个字符串。如果最新的GET请求返回的值与当前设置的值不同,则覆盖该值

我只是想知道在状态中更新简单字符串的最佳实践是什么

我的状态构造函数:

this.state = {
  goldPrice: '',
  items: {}
}
我的API请求:

fetchGoldPrice() {
  jQuery.ajax({
    method: 'GET',
    headers: {'Access-Control-Allow-Origin': '*'},
    url: Constants.API_URL,
    success: (gold) => {
      this.updateGoldPrice(gold.gold_bid_usd_toz);
    }
  });
}
如果获取成功,则调用updateGoldPrice并传入返回的价格

updateGoldPrice(goldPrice) {
  this.setState({ goldPrice: goldPrice });
}
然后我每30秒检查一次价格:

componentDidMount() {
  this.fetchGoldPrice();
  this.timer = setInterval(
    () => this.fetchGoldPrice(), 30000);
}
我只是好奇这是不是一个好办法。因为我读到的每一篇文章都是这样写的:

addItem(item) {
  const items = {...this.state.items};
  items[item] = item;
  this.setState({ items: items });
}
但是我并不是把所有的价格都存储在一个数组中,我只是想要一个最新的价格


谢谢。

您所指的最佳实践是永不改变状态!。 在您的例子中,string实际上是一个基元类型基元值,因此它在默认情况下是不可变的,所以这里不必担心。 您需要从数组和对象之类的引用类型中进行查看

从ES6开始的基本类型6:


你做得对。您的用户界面只显示最新的价格,所以这就是您需要存储在您所在州的所有价格。如果不显示历史价格,则无需存储历史价格


此外,在您的状态下存储基元类型this.setState{foo:bar}完全可以。

根据react文档,建议使用react库中的setState方法。。使用这种方法。是由setState{MyStateToModify:new value}生成的。希望能对你有所帮助

Boolean
Null
Undefined
Number
String
Symbol (new in ECMAScript 6)