startTransition
startTransition позволяет обновлять состояние без блокировки интерфейса.
startTransition(scope)Справочник
startTransition(scope) 
Функция startTransition  позволяет пометить обновление состояния как переход.
import { startTransition } from 'react';
function TabContainer() {
  const [tab, setTab] = useState('about');
  function selectTab(nextTab) {
    startTransition(() => {
      setTab(nextTab);
    });
  }
  // ...
}Параметры
- scope: Функция, которая обновляет состояние, вызывая одну или несколько функций- set. React немедленно вызывает- scopeбез параметров и помечает все обновления состояния, запланированные синхронно во время вызова функции scope, как переходы. Они будут неблокирующими и не будут отображать нежелательные индикаторы загрузки.
Возвращаемое значение
startTransition ничего не возвращает.
Замечания
- 
startTransitionне предоставляет способа отслеживать, ожидает ли переход выполнения. Чтобы показать индикатор ожидания во время выполнения перехода, необходимо использоватьuseTransition.
- 
Вы можете обернуть обновление в переход только в том случае, если у вас есть доступ к функции setдля этого состояния. Если вы хотите начать переход в ответ на какой-то проп или значение, возвращаемое пользовательским хуком, попробуйте использоватьuseDeferredValue.
- 
Функция, передаваемая в startTransition, должна быть синхронной. React немедленно выполняет эту функцию, помечая как переходы все обновления состояния которые происходят во время ее выполнения. Если вы попытаетесь выполнить дополнительные обновления состояния позже (например, в таймауте), они не будут помечены как переходы.
- 
Обновление состояния, помеченное как переход, будет прервано другими обновлениями состояния. Например, если вы обновите компонент диаграммы внутри перехода, но затем начнете вводить текст в поле ввода, пока диаграмма находится в процессе повторного рендеринга, React перезапустит процесс рендеринга компонента диаграммы после обработки обновления состояния в поле ввода. 
- 
Обновления перехода не могут использоваться для управления текстовыми полями ввода. 
- 
В случае наличия нескольких одновременных переходов, React в настоящее время группирует их вместе. Это ограничение, вероятно, будет устранено в будущих релизах. 
Применение
Пометка обновления состояния как неблокирующего перехода.
Вы можете пометить обновление состояния как переход, обернув его в вызов startTransition:
import { startTransition } from 'react';
function TabContainer() {
  const [tab, setTab] = useState('about');
  function selectTab(nextTab) {
    startTransition(() => {
      setTab(nextTab);
    });
  }
  // ...
}Переходы позволяют сохранить отзывчивость обновлений интерфейса даже на медленных устройствах.
С помощью перехода ваш UI остается отзывчивым даже во время повторного рендера. Например, если пользователь нажимает на вкладку, но затем меняет свое решение и нажимает на другую вкладку, он может это сделать, не дожидаясь завершения первого перерендеринга.