我刚刚开始学习React.js。这是关于setState()
的问题。
我的新状态是根据我以前的状态计算的,因此我使用setState()
作为以prevState
作为参数的函数。请参阅下面的图片以获得代码和视图。
根据我在网上找到的一些示例,updatedCount
变量是在调用setState()
(ex1)之前创建的。我的问题是:我可以使用prevState
在updatedCount
(ex2)内创建setState()
。这是一个好习惯吗?如果不是,那么这种方法有什么问题呢?
ex1:
handleCountChange = (type, v) => {
const updatedCount = this.state.counters[type] + v; // <--
this.setState((prev) => {
return {
counters: {
...prev.counters,
[type]: updatedCount,
},
};
});
};
ex2:
handleCountChange = (type, v) => {
this.setState((prev) => {
const updatedCount = prev.counters[type] + v; // <--
return {
counters: {
...prev.counters,
[type]: updatedCount,
},
};
});
};
下面显示了用于更新两个计数器的完整示例代码:
答案 0 :(得分:0)
是的,您可以在更新状态回调中更新状态之前创建变量并处理数据。
这在/* IF Ajax callback data = [{"dt":"2014-06-04","qt":"0"},{"dt":"2014-06-05","qt":"0"},{"dt":"2014-06-06","qt":"0"},{"dt":"2014-06-07","qt":"0"},{"dt":"2014-06-08","qt":"0"}]
*/
$.ajax({
url: 'calctimestat.php',
method: 'POST',
data: {dateone:dateOne,datetwo:dateTwo},
success: function(data)
{
var obj = jQuery.parseJSON(data);
var result = [];
var result1 = [];
for(var i in obj)
{
result.push(obj[i]['qt']);
result1.push(obj[i]['dt']);
}
console.log(JSON.stringify(result));
console.log(JSON.stringify(result1));
}
});
天内非常普遍,我已经做了很多,因为这是确保获取的数据与当前上下文保持最新的唯一方法。 / p>