Javascript React本机平面列表水平模式根本不工作
我正在使用React Native 0.44.0,我正在尝试使用卡片样式布局制作一个水平平面列表。无论出于何种原因,无论我做什么,我都无法激活水平模式。它似乎总是垂直呈现 以下是我正在使用的代码:Javascript React本机平面列表水平模式根本不工作,javascript,reactjs,react-native,react-native-flatlist,Javascript,Reactjs,React Native,React Native Flatlist,我正在使用React Native 0.44.0,我正在尝试使用卡片样式布局制作一个水平平面列表。无论出于何种原因,无论我做什么,我都无法激活水平模式。它似乎总是垂直呈现 以下是我正在使用的代码: <FlatList horizontal={true} data={this.state.newsFeed} refreshing={this.state.refreshing} ref={ref => { this.newsFeedLis
<FlatList
horizontal={true}
data={this.state.newsFeed}
refreshing={this.state.refreshing}
ref={ref => {
this.newsFeedListRef = ref;
}}
renderItem={this.renderNewsFeedRow.bind(this)}
keyExtractor={(item, index) => `feed_${index}`}
onRefresh={this.__handleNewsFeedOnRefresh.bind(this)}
renderScrollComponent={this.renderScrollComponent.bind(this)}
ListHeaderComponent={this.renderListHeaderComponent.bind(this)}
getItemLayout={(data, index) => ({
index,
length: ITEM_HEIGHT,
offset: ITEM_HEIGHT * index + headerBarHeight
})} />;
{
this.newsFeedListRef=ref;
}}
renderItem={this.renderNewFeedRow.bind(this)}
keyExtractor={(项,索引)=>`feed_${index}`}
onRefresh={this.\uhandlenewsfeedonrefresh.bind(this)}
renderScrollComponent={this.renderScrollComponent.bind(this)}
ListHeaderComponent={this.renderListHeaderComponent.bind(this)}
getItemLayout={(数据,索引)=>({
指数
长度:项目高度,
偏移量:项目高度*索引+头部白光
})} />;
我可以为我的组件渲染发布代码,但是除了填充和边距之外,没有一个组件渲染的样式使用任何东西,所以
flex
或flexDirection
之类的东西 对于任何通过谷歌搜索进来的人,我都知道了。如果您希望能够从水平方向动态更改为垂直方向,或者从垂直方向动态更改为水平方向,则无法渲染自己的滚动组件。因此,如果我使用前面的代码并注释掉对renderscorlcomponent
的调用,那么它就可以工作了。。。像这样:
<FlatList
data={this.state.newsFeed}
refreshing={this.state.refreshing}
horizontal={this.state.isHorizontal}
ref={ref => { this.newsFeedListRef = ref; }}
renderItem={this.renderNewsFeedRow.bind(this)}
keyExtractor={(item, index) => `feed_${index}`}
onRefresh={this.__handleNewsFeedOnRefresh.bind(this)}
//renderScrollComponent={this.renderScrollComponent.bind(this)}
ListHeaderComponent={this.renderListHeaderComponent.bind(this)}
getItemLayout={(data, index) => ({ index, length: ITEM_HEIGHT, offset: (ITEM_HEIGHT * index) })} />
{this.newsFeedListRef=ref;}
renderItem={this.renderNewFeedRow.bind(this)}
keyExtractor={(项,索引)=>`feed_${index}`}
onRefresh={this.\uhandlenewsfeedonrefresh.bind(this)}
//renderScrollComponent={this.renderScrollComponent.bind(this)}
ListHeaderComponent={this.renderListHeaderComponent.bind(this)}
getItemLayout={(数据,索引)=>({索引,长度:项目高度,偏移量:(项目高度*索引)})}/>
我还可以像这样动态更新定位。我添加了一个函数级常量,用于计算我的项目大小,如下所示:
const ITEM\u SIZE=this.state.isHorizontal?项目高度:this.props.width代码>
然后我更新了我的getItemLayout
函数,如下所示:
getItemLayout={(数据,索引)=>({index,length:ITEM\u SIZE,offset:ITEM\u SIZE*index})}/>
尝试在平面列表内使用水平标记,而不是值,它对我有效:D
<FlatList
horizontal
data={tab_ad}
renderItem={(item) => this.renderItem(item.item)}
keyExtractor={(item, index) => index}
={this.state}
/>
this.renderItem(item.item)}
keyExtractor={(项,索引)=>index}
={this.state}
/>
这意味着只有水平而不是水平={true}对,但我在这里说的是,动态地不再能够从水平切换到垂直,它总是被固定为垂直。这,horizontal={This.state.isHorizontal}
您想处理从水平到垂直的转换吗?horizontal={true}和horizontal是一个相同的东西。项目大小是否包括或不包括填充和边距?@incorelabs我在这里包括了填充