Reactjs 每X个项目在平面列表中放置广告?
我有一个简单的清单,上面有很多项目。是否有可能每X个项目将其打破,以便在其中放置其他组件,如广告?我在官方文件中找不到它。以下是我的简单列表:Reactjs 每X个项目在平面列表中放置广告?,reactjs,react-native,react-native-flatlist,Reactjs,React Native,React Native Flatlist,我有一个简单的清单,上面有很多项目。是否有可能每X个项目将其打破,以便在其中放置其他组件,如广告?我在官方文件中找不到它。以下是我的简单列表: <FlatList ListFooterComponent={this.renderFooter} removeClippedSubviews={true} data={this.state._data} renderItem={({item}) => {
<FlatList
ListFooterComponent={this.renderFooter}
removeClippedSubviews={true}
data={this.state._data}
renderItem={({item}) => {
return (
<View>
...
{item.something}
...
</View>
);
}}
keyExtractor={(item, index) => index}
/>
{
返回(
...
{item.something}
...
);
}}
keyExtractor={(项,索引)=>index}
/>
据我所知,平面列表中没有内置此类功能
但是,这样做的一种方法是将广告添加到传递到FlatList
的数据中,并修改renderItem
函数,使其也能够呈现广告
例如,以下代码段将获取一个内容数组和一个广告数组,并在每2个元素后添加一个add:
const ads = [...]; // array of ads
const content = [...]; // array of content
const alternate = 2;
const data = content.reduce((acc, curr, i) => {
if ((i + 1) % alternate === 0) {
const adIndex = Math.floor(i / alternate) % ads.length;
return [...acc, curr, {...ads[adIndex], isAdd: true }];
}
return [...acc, curr];
}, []);
然后,您可以修改renderItem
函数,以在项目为一个时呈现一个add,例如
({item}) => {
if (item.isAdd) {
// renderAdd
} else {
// renderContent
}
}