Главная Категории Контакты Поиск

React StrictMode

Что такое React StrictMode и как его использовать.

React ·04.05.2020·читать 5 мин 🤓·Автор: Alex Myzgin

Что такое StrictMode и почему нужно его использовать

StrictMode (строгий режим) - это инструмент для выделения потенциальных проблем в приложении. Он активирует дополнительные проверки и предупреждения.

StrictMode не отображает ничего визуального (похожего на Fragment), но обнаруживает потенциальные проблемы в коде и даёт полезные предупреждения. Строгий режим работает только в режиме разработки (development) и не влияет на сборку. С появлением Hooks и Concurrent Mode (параллельный режим), который не за горами, строгий режим становится всё более важным инструментом для обнаружения плохих практик (параллельный режим, вероятно, не будет работать, пока не исправишь предупреждения, выдаваемые в строгом режиме).

StrictMode помогает обнаружить:

Устаревший код и устаревшие API

Как и всё остальное, что сделано из кода, React со временем меняется, и то, что когда-то считалось современным, в конечном итоге становится устаревшим и заменяется. Например, findDOMNode, который устарел в строгом режиме и, возможно, будет удален в будущей версии React. Другими примерами являются использование String Refs и устаревшего context API, которые вызывают некоторые “проблемы”.

Небезопасные методы жизненного цикла

Начиная с версии 16.9 React выдаёт предупреждение при использовании любого из методов жизненного цикла componentWillMount, componentWillReceiveProps и componentWillUpdate. Надеюсь, что ты уже преобразовал эти методы в более безопасные альтернативы (если нет, тебе следует как минимум добавить префикс «UNSAFE_»). Строгий режим может помочь определить небезопасные методы жизненного цикла в собственном коде и в сторонних библиотеках, а также предложит альтернативу.

Неожиданные побочные эффекты

В Concurrent Mode React может запускать метод рендеринга несколько раз, прежде чем вносить изменения (например, изменить DOM). Поэтому важно, чтобы этот метод не содержал побочных эффектов, которые могут привести к утечкам памяти и неверному состоянию. Строгий режим не может обнаружить побочные эффекты автоматически. Но он использует хоть простой, но умный трюк - методы constructor, render, setState и getDerivedStateFromProps запускаются дважды, тем самым облегчая обнаружение побочных эффектов. Если это приводит к какому-либо странному поведению в приложении, ты знаешь, что искать.

Как использовать Strict Mode

Самый простой способ - обернуть весь компонент приложения в <React.StrictMode> </React.StrictMode> в файле index.js:

import React from "react";
import ReactDOM from "react-dom";

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById("root")
);

Также, можно его использовать, обернув один или несколько компонентов:

import React from "react";

class Hello extends React.Component {
  render() {
    return (
      <div>
        <React.StrictMode>...</React.StrictMode>
      </div>
    );
  }
}

Представленный в версии React 16.3 в марте 2018 года StrictMode, не оказывает никакого влияния на production, поэтому ты всегда можешь оставить его в коде. При разработке он будет показывать полезные предупреждения в консоле браузера.

Website, name & logo
Copyright © 2019. Alex Myzgin