Javascript React本机平面列表水平模式根本不工作

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

我正在使用React Native 0.44.0,我正在尝试使用卡片样式布局制作一个水平平面列表。无论出于何种原因,无论我做什么,我都无法激活水平模式。它似乎总是垂直呈现

以下是我正在使用的代码:

 <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我在这里包括了填充