Как седлать «точки-индикторы» для ScrollView?

Для создания «точек-индикаторов» для ScrollView в React Native можно использовать компоненты, такие как ViewPager и Pagination. Возможны несколько подходов к реализации данного функционала, но в этом ответе рассмотрим наиболее простой и распространенный вариант.

1. В первую очередь, следует установить необходимые пакеты через npm или yarn:

npm install react-native-pager-view react-native-pagination

2. Импортируем компоненты в файле с нашим ScrollView:

import ViewPager from '@react-native-community/viewpager';
import { Pagination } from 'react-native-pagination';

3. Создаем компонент, который будет содержать наш ScrollView с «точками-индикаторами». В данном примере назовем его ScrollViewWithIndicator:

import React, { useState } from 'react';
import { View } from 'react-native';

const ScrollViewWithIndicator = ({ data }) => {
  const [currentPage, setCurrentPage] = useState(0);

  const onPageSelected = (e) => {
    setCurrentPage(e.nativeEvent.position);
  };

  return (
    <View style={{ flex: 1 }}>
      <ViewPager
        style={{ flex: 1 }}
        onPageSelected={onPageSelected}
      >
        {data.map((item, index) => (
          <View key={index}>{/* ваш содержимое, к примеру изображение или текст */}</View>
        ))}
      </ViewPager>

      <Pagination
        dotsLength={data.length}
        activeDotIndex={currentPage}
        containerStyle={{ backgroundColor: 'transparent', paddingVertical: 8 }}
        dotStyle={{
          width: 10,
          height: 10,
          borderRadius: 5,
          marginHorizontal: 8,
          backgroundColor: 'rgba(0, 0, 0, 0.75)',
        }}
        inactiveDotStyle={{
          width: 10,
          height: 10,
          borderRadius: 5,
          marginHorizontal: 8,
          backgroundColor: 'rgba(0, 0, 0, 0.25)',
        }}
        inactiveDotOpacity={0.4}
        inactiveDotScale={0.6}
      />
    </View>
  );
};

export default ScrollViewWithIndicator;

4. Используем наш компонент ScrollViewWithIndicator в родительском компоненте и передаем ему данные, которые будут отображаться в ScrollView:

import React from 'react';
import { View } from 'react-native';
import ScrollViewWithIndicator from './ScrollViewWithIndicator';

const App = () => {
  const data = [
    /* ваши данные, к примеру изображения или текст для ScrollView */
  ];

  return (
    <View style={{ flex: 1 }}>
      <ScrollViewWithIndicator data={data} />
    </View>
  );
};

export default App;

Теперь у вас должен быть работающий экран с ScrollView, который содержит «точки-индикаторы». Вы можете настроить стили компонентов ViewPager и Pagination в соответствии со своими потребностями.