Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 每X个项目在平面列表中放置广告?_Reactjs_React Native_React Native Flatlist - Fatal编程技术网

Reactjs 每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}) => {

我有一个简单的清单,上面有很多项目。是否有可能每X个项目将其打破,以便在其中放置其他组件,如广告?我在官方文件中找不到它。以下是我的简单列表:

<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
  }
}