- PVSM.RU - https://www.pvsm.ru -
За выходные мы выпустили первый (и надеемся последний) пре-релиз React v0.13!
Мы уже немного говорили о грядущих изменениях. Основное — это конечно же поддержка ES6 классов. Подробнее в нашем анонсе беты [1]. Мы очень взволнованы этим событием! Себастьян также написал сегодня утром о некоторых изменениях с ReactElement [2]. Мы надеемся, что изменения, над которыми мы работатли, улучшат производительность и ощущения от разработки.
Пре-релиз доступен для скачивания:
Мы также опубликовали 0.13.0-rc1
версию react
и react-tools
в npm и react
в bower.
props
после того, как элемент был создан, устарело. В dev-режиме вы получите предупреждение; следующие версии React будут включать в себя оптимизации, предполагая, что props
— константа.statics
) больше автоматически не привязываются к компоненту.ref
немного изменился так, что ссылка на компонент доступна сразу после вызова метода componentDidMount
; это изменение будет заметно, если ваш компонент вызывает родительский коллбэк внутри componentDidMount
, а это анти-паттерн и этого следует избегать не смотря ни на что.setState
теперь всегда применяются в пакетном режиме, а значит асинхронны. Раньше первый вызов, при первом подключении (mount) компонента был синхронным.setState
и forceUpdate
на отключенном (unmounted) компоненте теперь выкидывает предупреждение, вместо исключения. Это помогает избежать проблем с производительностю в промисах.this._pendingState
и this._rootNodeID
.React.findDOMNode(component)
, его нужно использовать, вместо component.getDOMNode()
. Базовый класс для компонентов основанных на ES6-классах не имеет метода getDOMNode
.ref
, позволит использовать коллбэк, вместо названия:
<Photo ref={(c) => this._photo = c} />
так можно сослаться на компонент с this._photo
(вместо ref="photo"
что даст this.refs.photo
)
this.setState()
может быть функцией, для транзакционных обновлений состояния, например
this.setState((state, props) => ({count: state.count + 1}));
Это значит, что вам больше не нужно использовать this._pendingState
, которого больше нет.
this.props.children
.ComponentClass.type
устарел. Используйте просто ComponentClass
, обычно так:
element.type === ComponentClass
createClass
были удалены, или устарели из-за ES6 классов, например: getDOMNode
, setProps
, replaceState
.React.addons.classSet
устарел. Эта функциональность может быть заменена некоторыми свободно доступными модулями. Например classnames [8] один из таких модулей.class
больше не перечисляемы по умолчанию, это требование Object.defineProperty
; если вы поддерживаете браузеры, такие как IE8, можно использовать флаг --target es3
, который восстановит старое поведение.
--target
для команды jsx, позволяет указать версию ECMAScript.
es5
по умолчанию.
es3
восстанавливает предыдущее поведение по умолчанию. Также делает использование зарезервированных слов безопасным, например this.static
заменится на this['static']
для совместимости с IE8.
>
или }
внутри элемента. Раньше это трансформировалось в строку, теперь это будет ошибка парсинга. Мы выпустим инструмент для поиска и исправления потенциальных проблем в JSX коде.
Автор: hell0w0rd
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/83992
Ссылки в тексте:
[1] нашем анонсе беты: http://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html
[2] некоторых изменениях с ReactElement: http://facebook.github.io/react/blog/2015/02/24/streamlining-react-elements.html
[3] http://fb.me/react-0.13.0-rc1.js: http://fb.me/react-0.13.0-rc1.js
[4] http://fb.me/react-0.13.0-rc1.min.js: http://fb.me/react-0.13.0-rc1.min.js
[5] http://fb.me/react-with-addons-0.13.0-rc1.js: http://fb.me/react-with-addons-0.13.0-rc1.js
[6] http://fb.me/react-with-addons-0.13.0-rc1.min.js: http://fb.me/react-with-addons-0.13.0-rc1.min.js
[7] http://fb.me/JSXTransformer-0.13.0-rc1.js: http://fb.me/JSXTransformer-0.13.0-rc1.js
[8] classnames: https://www.npmjs.com/package/classnames
[9] Источник: http://habrahabr.ru/post/251467/
Нажмите здесь для печати.