【发布时间】:2016-01-31 21:37:01
【问题描述】:
我有一个简单的 ListView,它似乎需要很长时间才能加载它的项目。我已经在发布模式下进行了测试,加载整个页面大约需要 3 秒。如果我设置initialListSize={1},我可以看到它逐项构建列表。
ListView JSX 代码:
<ListView
dataSource={this.state.dataSource}
renderRow={this.renderRow}
renderSeparator={(sectionID, rowID) => <View key={`${sectionID}-${rowID}`} style={styles.separator} />}
style={styles.listView}
initialListSize={1}
/>
还有 renderRow 方法:
renderRow(row) {
// console.log ('rendering scale row: ' + row.numerator + ':' + row.denominator );
return (
<TouchableHighlight onPress={() => this.pressRow(row)} underlayColor="grey">
<View style={styles.rowContainer}>
<Text style={styles.rowText}>{row.hasOwnProperty('label') ? row.label : row.numerator + ':' + row.denominator}</Text>
<Text style={styles.rowText}>{row.hasOwnProperty('label') ? row.numerator + ':' + row.denominator : ''}</Text>
</View>
</TouchableHighlight>
);
}
我没有在 renderRow 中做任何非常复杂的事情...并且数据已经在之前的视图中获取并通过 props 传递。
有什么我不知道的可能会影响加载/渲染时间的事情吗?
这仅适用于 iOS,适用于 iPhone 4S。我的测试中只有 12-21 行。
我还应该补充一点,该应用程序的核心是使用 JUCE C++ 框架并在其中一个视图中运行一些音频处理。我有一个仅在该视图可见时运行的音频处理线程 - 所有其他视图(包括具有此 ListView 的视图)将停止音频处理线程。我也尝试过以类似的方式停止音频线程,但没有任何区别。
【问题讨论】:
-
代码看起来不错。设备还是模拟器?仅限iOS?多少行?
标签: ios listview react-native