【发布时间】:2018-08-28 17:18:12
【问题描述】:
我在 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
这是大多数操作发生的两个文件
我知道问的可能太多了,但是有人可以帮助我/建议我如何提高其性能。
【问题讨论】:
-
你正在更新循环内的 redux !它应该被调用一次而不是 updateCoinData.length 次
-
@xadm 它在循环的 if 条件下被更新。详细地说,套接字消息包含有关其值已更新的特定加密货币的信息。我尝试在我的
if条件中添加break;,但这对我没有帮助。 -
如果条件多次为真?消息是针对一个 id 的??
-
@xadm 只有一次,但 socket.io 可能每秒发送一次消息。我正在使用github.com/CoinCapDev/CoinCap.io
-
componentDidUpdate 被多次调用,重命名此方法并从 componenDidMount 调用
标签: reactjs react-native