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