Различение монтажа компонентов или увлажнения в React 16.1.1

У меня есть ScrollToTopOnMount как реализовано здесь с

componentDidMount(prevProps) {
  window.scrollTo(0, 0)
}

Это прекрасно работает, за исключением случаев, когда я объединяю это с SSR и увлажнением, когда происходит гидратация, моя страница поднимается наверх.

Другие ответы, такие как этот, давали мне надежду на то, что может быть какой-то способ различить, законно ли монтируется компонент, или просто гидратируется. Тем не менее, похоже, что это не тот случай, когда реагирует 16.1.1, когда и сервер, и клиент, кажется, вызывают componentWillMount,

Есть ли способ, чтобы метод жизненного цикла определял, монтируется ли он там, где нет DOM, или гидратирует существующий узел?

1 ответ

ReactDOM.hydrate имеет обратный вызов, когда он завершает. Одним из решений было бы установить и снять глобальную переменную window.hydrating = true и дифференцировать на основе этого, когда компонент монтируется.

Другие вопросы по тегам