SectionList получить индекс раздела в renderSectionHeader

<SectionList
  sections={[{ data: [1, 2] }, { data: [3, 4] }]}
  renderItem={({ item, index }) => ...}
  renderSectionHeader={({ section, index }, i) => {
    console.log(index, i); // both undefined
  }}
/>

Я хочу получить индекс раздела в renderSectionHeader.
Напр. index должно быть 0, когда section.data равно [1, 2], и 1, когда section.data равно [3, 4].

Как я могу сделать это помимо добавления индекса к данным sections?


person Avery235    schedule 12.05.2018    source источник


Ответы (2)


В списке разделов react native нет индекса раздела renderSectionHeader, но вы можете добавить опору индекса в свои разделы, как это

 sections={[{ data: [1, 2], index:0 }, { data: [3, 4], index:1 }]}

а затем получить доступ к индексу в renderSectionHeader следующим образом

 renderSectionHeader={({section}) => {
     console.log(section.index); 
 }}
person digit    schedule 12.05.2018
comment
Ты спас мне день !! Требовался специальный индекс !! Спасибо. - person Kahng; 13.07.2018
comment
Это очень полезно для включения любых данных для раздела. - person Johan Nordberg; 26.03.2019
comment
что, если наши разделы динамические и мы не можем жестко закодировать индекс? - person Pulkit Sharma; 11.03.2020
comment
Я согласен с @PulkitSharma, что, если наши данные динамические? Это не сработает. Это не лучшее решение. - person Kasra; 06.11.2020

Я знаю, что уже поздно, но, может быть, это кому-то поможет. Лучше всего получить индекс вашего раздела из массива, который вы передаете компоненту SectionList. Например, предположим, что у вас есть массив dataList, который передается в разделы sections={dataList}, тогда вы можете получить индекс следующим образом:

renderSectionHeader={({ section }) => {
    const index = dataList.indexOf(section)
    // Here you have the index
    return <View />
}}

Надеюсь это поможет.

person user2731717    schedule 16.03.2020
comment
Это не лучшее решение, поскольку вы используете indexOf , а это означает, что дополнительный поиск неэффективен. - person Kasra; 06.11.2020