#react-native #algolia #react-native-flatlist
#react-native #algolia #react-native-плоский список
Вопрос:
Если вы помещаете подключенный компонент Algolia в заголовок плоского списка, это как если бы он входил в бесконечный цикл запросов. connectInfiniteHits выполняется постоянно.
Это действительно раздражает, если вам нравится помещать несколько простых фильтров в заголовки списка обращений.
Моя настройка такая:
У меня есть плоский список, который обернут в connectInfiniteHits HOC. ListHeaderComponent содержит компонент, который обернут специальным connectRefinementList . Та же проблема возникает с connectSearchBox HOC.
Кто-нибудь видел это и нашел решение?
Комментарии:
1. Не могли бы вы привести небольшой пример вашего компонента? Это помогло бы понять проблему.
2. Немного сложно выделить действительно простой пример для вставки кода, но у меня есть плоский список, который обернут специальной функцией connectInfiniteHits. Если я создам ListHeaderComponent для этого плоского списка, который содержит компонент, обернутый в connectRefinementList, все сломается.
3. Какую форму
ListHeaderComponent
вы используете? Функция? Компонент?4. Я использую компонент
5. Мне удается воспроизвести проблему с функцией, но не с компонентом.
Ответ №1:
Мне удается заставить это работать с этими строками:
const RefinementList = connectRefinementList(({ items, refine }) => (
<View>
{items.map(item => (
<TouchableOpacity key={item.label} onPress={() => refine(item.value)}>
<Text style={{ fontWeight: item.isRefined ? '600' : 'normal' }}>
{item.label}
</Text>
</TouchableOpacity>
))}
</View>
));
const InfiniteHits = connectInfiniteHits(({ hits, hasMore, refine }) => (
<FlatList
data={hits}
keyExtractor={item => item.objectID}
onEndReached={() => hasMore amp;amp; refine()}
ListHeaderComponent={<RefinementList attribute="brand" />}
renderItem={({ item }) => (
<View>
<Text>{JSON.stringify(item).slice(0, 100)}</Text>
</View>
)}
/>
));
Обратите внимание, что я не использую версию функции, которая действительно ломается.