Пишу про разработку вообще и в частности про: JavaScript, HTML5, CSS3, AngularJS, ReactJS, Agile, Bitcoins

Вышел новый React 16 – что нового

Итак, наконец-то вышла 16-я версия библиотеки и хочется поговорить о некоторых обновленных и добавленных фичах. Пишу, конечно же о том, что мне в первую очередь бросилось в глаза, если хотите что добавить – велком в комментарии 🙂

react-16-fiber

Во-первых, ребята подошли массированно к улучшению библиотеки и полностью ее переписали. Вместе с тем API не поменялся, за что отдельное спасибо. Файлы библиотеки стали на 30% легче без потери качества:

Очень приятное ужатие в размерах, прямо молодцы.

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

Теперь рендер компонента может возвращать массивы и строки. Раньше этого сделать было нельзя, нужно было обязательно все оборачивать в тег, что конечно же создавало определенные проблемы. Наконец-то это странное ограничение отменили.

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

Новая возможность – теперь в реакте есть порталы. Порталы это возможность рендерить часть компонента в другом элементе дома, а не в родителе данного компонента.

Это может быть полезно в тех случаях когда нужно показать контент в компоненте, который “не вмещается” в компонент. Например, всплывающую подсказку. С ними обычно проблема в том, что если они будут вложены в тег со стилем “overflow: hidden”, то часть подсказки будет отрезана. Разумеется это проблема и приходится вкладывать ноду подсказки в другую часть DOM’а и стилями выставлять ее положение. Теперь в реакте можно будет с этим работать удобнее работать (ну по идее).

Как я уже упоминал выше, реакт был полностью переписан. И как часть работы над архитектурой фреймворка ребята использовали новый подход, назвали его Fiber. Полный его потенциал еще не использован, однако разработчики обещают, что это только основа для следующих релизов, вот там-то и проявятся все самые интересные возможности.

Среди таких возможностей – асинхронный рендеринг. Я думаю, что ни для кого не секрет, что браузер не умеет делать сразу много дел одновременно, особенно это касается рендеринга. Самое лучшее, когда все разбито на части и рендерится постепенно. Тогда контент появляется плавно и не “замораживает” работу уже появившихся на экране элементов. Однако, это только анонсированно, появится в будущих релизах.

Ну что же – звучит многообещающе. В новых проектах 16-ый реакт можно уже сразу использовать, а вот со старыми нужно будет пошаманить, чтобы все начало работать. Это же не только реакт обновить, но и все сопутствующие библиотеки – тесты, сторибук и прочие радости. Я уже начал над этим работать и дело продвигается весьма неспешно. Об этом я еще напишу.

А пока, хороших выходных, парни 😉

Поделиться:
comments powered by Disqus