我在React中创建了一个非常简单的第一个Native应用,但我的应用对诸如触摸之类的事件的响应速度非常慢
如建议的那样,我已经实现了几项功能,例如实现FlatList
而不是映射等等。
我认为我可能做错的两件事是
中的状态更新componentDidUpdate() {
var updateCoinData = [...this.props.cryptoLoaded];
socket.on('trades', (tradeMsg) => {
for (let i=0; i<updateCoinData.length; i++) {
if (updateCoinData[i]["short"] == tradeMsg.coin ) {
//Search for changed Crypto Value
updateCoinData[i]["perc"] = tradeMsg["message"]["msg"]["perc"]
updateCoinData[i]['mktcap'] = tradeMsg['message']['msg']["mktcap"]
updateCoinData[i]['price'] = tradeMsg['message']['msg']['price']
//Update the crypto Value state in Redux
this.props.updateCrypto(updateCoinData);
}
}
})
,或者在我的子组件中经常调用setState
。
如果有人想参考,这是我资料库的链接 https://github.com/irohitb/Crypto
这是大多数操作正在进行的两个文件
我知道这个问题可能太多了,但是有人可以帮助我/建议我如何提高其性能。
答案 0 :(得分:1)
存在“结构错误”,导致滥用滥用。与问题(性能)没有直接关系,但是可以有一些间接关系。
您正在本地处理状态/数据,而这是简化程序的职责。
您应该从套接字数据准备有效负载,并分派redux操作/消息。 Reducer应该创建前一状态的副本(使用slice()
复制数组,扩展运算符'...'很慢),搜索匹配的ID,对其进行更新并返回为新状态。 / p>
Reducer的主要思想是提取状态转换逻辑以进行简单测试。仅存储/接收现成数据集时可以测试什么?