gpt4 book ai didi

listview - 为什么这个 ListView 只显示 10 个项目?

转载 作者:行者123 更新时间:2023-12-04 18:02:49 25 4
gpt4 key购买 nike

(我知道有一些网站可以共享 reactnative 示例,但我无法通过 google 找到它们;“react native 共享代码”只是提供了共享按钮的代码,“示例”也是如此——什么是好的网站用于此?)

我有一个 ListView (感谢这个 answer,归功于@colin-ramsay)。我想做的是将一些项目放在每个 ListView 中,并使它们在容器内对齐(复选框和标签在同一行上)。但我不能走那么远,因为我无法弄清楚为什么这个 20 个项目的数组只显示 10 个项目。

警报在触发时显示 20 个项目 (0-19)。

代码:

import React, {Component} from 'react';
import {View, Text, StyleSheet, ListView} from 'react-native';

var styles = StyleSheet.create({
container:{
marginTop:65,
margin:10, backgroundColor:"#DDDDEE"
},
list:{
height:400,
marginTop:40,
flexDirection:'row',
flexWrap:'wrap', justifyContent:'center', alignItems:'flex-start'
},
item:{
alignItems:'flex-start',
backgroundColor:'red', width:40, height:40, margin:3, padding:3,
justifyContent:'center', alignItems:'center'
}
});

class TestCmp extends Component {

constructor(props) {
super(props);
var ds = new ListView.DataSource({rowHasChanged:(r1, r2) => r1 !== r2});
var data = Array.apply(null, {length:20}).map(Number.call, Number);
alert(data);
this.state = {dataSource:ds.cloneWithRows(data)};
}

render() {
return (

<ListView contentContainerStyle={styles.list} dataSource={this.state.dataSource} renderRow={
(rowData) => {
return (
<View style={styles.item}>
<Text>{rowData}</Text>
</View>
)
}
}/>
);
}
}

export default class TestPage extends Component {
render() {
return (
<View style={styles.container}>
<TestCmp/>
</View>
)
}
}

其他 10 个项目怎么了?我尝试使用检查器并更改容器的高度,但没有任何效果。

IOS screen shot

最佳答案

ReactNative ListView 组件使用 initialListSize 计算在初始组件安装时要渲染的行数属性(property)。默认情况下 initialListSize设置为 10。

作为引用,请参阅来自 ReactNative ListView 的以下函数源代码,

  var DEFAULT_INITIAL_ROWS = 10;      
getDefaultProps: function() {
return {
initialListSize: DEFAULT_INITIAL_ROWS,
pageSize: DEFAULT_PAGE_SIZE,
renderScrollComponent: props => <ScrollView {...props} />,
scrollRenderAheadDistance: DEFAULT_SCROLL_RENDER_AHEAD,
onEndReachedThreshold: DEFAULT_END_REACHED_THRESHOLD,
stickyHeaderIndices: [],
};
}

如果你想让 ListView 呈现 默认所有项目 那么你可以使用 initialListSize ListView 组件中的属性,如下面的代码
<ListView contentContainerStyle={styles.list}
initialListSize={20}
dataSource={this.state.dataSource} renderRow={
(rowData) => {
return (
<View style={styles.item}>
<Text>{rowData}</Text>
</View>
)
}
}/>

关于listview - 为什么这个 ListView 只显示 10 个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40706450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com