Как сделать глобальный таймер?

Для создания глобального таймера в React Native можно использовать глобальную переменную, контекст или стороннюю библиотеку.

Вариант 1: Глобальная переменная.
Создайте глобальную переменную в файле, который импортируется во всех компонентах, где вам нужен таймер. Например, создайте файл Timer.js и определите в нем глобальную переменную:

let intervalId = null;

Затем, в нужных компонентах, вы можете использовать эту переменную для установки и очистки интервала:

import React, { useEffect } from 'react';

const MyComponent = () => {
  useEffect(() => {
    intervalId = setInterval(() => {
      // Действия, выполняемые каждый интервал
    }, 1000);

    return () => {
      clearInterval(intervalId);
    };
  }, []);

  return (
    // JSX компонента
  );
};

export default MyComponent;

Вариант 2: Контекст.
Создайте контекст, который будет хранить интервал. Создайте файл TimerContext.js и определите в нем контекст:

import React, { createContext, useEffect } from 'react';

const TimerContext = createContext(null);

export const TimerProvider = ({ children }) => {
  useEffect(() => {
    const intervalId = setInterval(() => {
      // Действия, выполняемые каждый интервал
    }, 1000);

    return () => {
      clearInterval(intervalId);
    };
  }, []);

  return (
    <TimerContext.Provider value={intervalId}>
      {children}
    </TimerContext.Provider>
  );
};

export default TimerContext;

Затем, в компонентах, где нужен таймер, вы можете использовать контекст для доступа к интервалу:

import React, { useContext } from 'react';
import TimerContext from './TimerContext';

const MyComponent = () => {
  const intervalId = useContext(TimerContext);

  return (
    // JSX компонента
  );
};

export default MyComponent;

Оба эти варианта позволяют создать глобальный таймер, который будет работать на протяжении всего времени жизни приложения. При размонтировании компоненты, содержащей интервал, он будет автоматически очищен, предотвращая утечку памяти.

Также можно использовать сторонние библиотеки, такие как react-native-background-timer, которые предоставляют более продвинутые функции управления и контроля глобальных таймеров.