React v16.7: Нет, это не тот, что с хуками

Декабрь 19, 2018 Эндрю Кларк


Наш последний релиз содержит важное исправление по производительности для React.lazy. Хотя в API нет никаких изменений, мы выпускаем его как minor вместо патча.




React следует семантике версий. Как правило, это означает, что мы используем версии патчей для багфиксов и minor-ы для новых (не ломающих) функций. Однако мы оставляем за собой право выпускать minor версии, даже если они не содержат новых функций. Мотив состоит в том, чтобы зарезервировать патчи для изменений, которые имеют очень низкую вероятность поломки. Патчи являются наиболее важным типом релиза, потому что иногда они содержат критические багфиксы. Это означает, что релизы патчей имеют более высокий уровень надежности. Для патча недопустимо, чтобы он вносил дополнительные баги, так как, если у людей начнется недоверие к патчам, это ставит под угрозу нашу способность исправлять возникающие критические баги - например, исправлять уязвимости безопасности.

Мы не собираемся упускать ошибки. У React кропотливым трудом заслуженная репутация стабильности, и мы намерены продолжать в том же духе. Мы тщательно тестируем каждую версию React перед выпуском. Это включает в себя модульные тесты, генеративные (нечеткие) тесты, интеграционные тесты и внутренние вычисления для десятков тысяч компонентов. Однако иногда мы совершаем ошибки. Вот почему в будущем наша политика будет заключаться в том, что если релиз содержит нетривиальные изменения, мы добавим minor версию, даже если внешнее поведение будет таким же. Мы также выпустим minor при изменении API с префиксом unstable_.




Пока нет, но скоро будет можно!

На React Conf мы сказали, что 16.7 будет первым релизом, включающим хуки. Это была ошибка. Мы не должны были давать определенный номер версии невыпущенной функции. Мы будем избегать этого в будущем.

Хотя 16.7 не включает хуки, пожалуйста, не делайте каких-либо выводов о сроках появления хуков. Наши планы на хуки неизменны:


  • было одобрено ().

  • была вмерджена в репозиторий React (под флагом функции).

  • В настоящее время мы находимся на стадии тестирования, и вы можете ожидать публичного релиза в течение нескольких месяцев.


Мы слышали от многих людей, что они уже хотят начать использовать хуки в своих приложениях. Мы тоже не можем дождаться, чтобы поставить их! Но поскольку хуки меняют то, как пишутся компоненты React, мы тратим дополнительное время на то, чтобы как следует уточнить детали. Мы ценим ваше терпение, и кропотливо готовим эту захватывающую новую функцию для широкого использования.

Узнайте больше о плане действий в нашем предыдущем посте.




React v16.7.0 доступен в реестре npm.

Чтобы установить React 16 с помощью Yarn, запустите:


Код
    
  yarn add [email protected]^16.7.0 [email protected]^16.7.0
  

Чтобы установить React 16 с помощью npm, запустите:


Код
    
  npm install --save [email protected]^16.7.0 [email protected]^16.7.0
  

Мы также предоставляем UMD-сборки React на CDN:


Код
    
  <script crossorigin src="https://unpkg.com/[email protected]/umd/react.production.min.js"></script>
  <script crossorigin src="https://unpkg.com/[email protected]/umd/react-dom.production.min.js"></script>
  

Обратитесь к документации для получения подробных инструкций по установке.




React DOM

  • Исправлена проблема производительности React.lazy для большого количества лениво загруженных компонентов. ()

  • Очищение полей при размонтировании, чтобы избежать утечек памяти. ()

  • Исправлена ошибка с SSR и контекстом при смешивании react-dom/[email protected] и [email protected])

  • Исправлена регрессия производительности в режиме профилирования. ()


Scheduler (экспериментальный)

  • Публикация в MessageChannel вместо window. ()

  • Уменьшение издержки сериализации. ()

  • Исправлен фидбэк к setTimeout в тестовых средах. ()

  • Добавлены методы для отладки. ()