我正在使自己的第一个反应本机化,尽管我会尽可能地容易,但事实证明,要理解我可能在做错的事情对我来说很难。
首先,我有一个非常简单的应用程序,可通过redux提取数据
componentWillMount() {
this.props.fetchCoin()
this.props.CurrencyRate()
}
然后在其返回部分呈现
return (
<ScrollView>
<Header />
{/* Custom Search Input */}
<View>
<TextInput
style={textInput}
placeholder="Search Coin"
onChangeText={(text) => this.onSearch(text)} />
</View>
<View>
<FlatList
data={this.state.searchCoin ? displaySearchCrypto : this.props.cryptoLoaded}
renderItem={({ item }) => (
<CoinCard
key={item["long"]}
coinShortName = {item["short"]}
coinName = {item["long"]}
coinPrice = {item["price"].toFixed(2)}
marketCap = {(item["mktcap"]/1000000000).toFixed(4)}
percentChange = {item["perc"].toFixed(2)}
vwapData={item["vwapData"].toFixed(2)}
coinImage={"https://coincap.io/images/coins/" + item["long"] + ".png"}
/>
)}
/>
</View>
</ScrollView>
)
}
}
我发现我的ram消耗甚至超过500 MB 该应用程序已提取数据并将UI线程固定为60(fps),其中我 认为用户界面什么都没发生
而不是共享我的所有代码:您可以在github上找到大部分内容 上面的代码段代码是从这里共享的:https://github.com/irohitb/Crypto/blob/master/src/container/cryptoContainer.js
以上代码中的CoinCard组件可在此处查看:https://github.com/irohitb/Crypto/blob/master/src/components/CoinCard.js
与此相同的操作在这里:https://github.com/irohitb/Crypto/blob/master/src/actions/cryptoAction.js
[问题:] 能否有人帮助我找出我在做错什么以及如何解决?如果有人想要This repository,try it out应该可以在您的模拟器上正常运行而不会引发错误。
答案 0 :(得分:2)
FlatList
的 Image
在Android上有一个未解决的问题:https://github.com/facebook/react-native/issues/13413。这里有一些有关性能的提示:https://github.com/filipemerker/flatlist-performance-tips/
尽管要进行权衡取舍,但还是要尝试将removeClippedSubviews
添加到您的FlatList
中,这是第一次解决。
我还在屏幕截图中指出,您收到有关丢失键的警告。解决该问题,然后尝试keyExtractor
,看看是否可以解决问题。
或者,使用FlatList
以外的其他名称,例如ScrollView
。您将失去FlatList
的某些功能,但是如果获得可接受的内存使用率和性能,那是值得的。