React v15.5.0更新說明 & v16.0.0更新預告
React今日發布了15.5.0版本,同時這也將是以15開頭的最後一個版本,下一次發布,我們將迎來React 16.0.0
在15.5.0這一版本中,主要有以下兩處改動:
獨立React.PropTypes
在之前的版本之中,我們可以通過React.PropTypes這個API訪問React內置的一些類型來檢查props,在15.5.0版本中,這一API被獨立成了一個新的包 prop-types
// 15.4 以前import React from "react";class Component extends React.Component { render() { return <div>{this.props.text}</div>; }}Component.propTypes = { text: React.PropTypes.string.isRequired,}// 15.5 以後import React from "react";import PropTypes from "prop-types";class Component extends React.Component { render() { return <div>{this.props.text}</div>; }}Component.propTypes = { text: PropTypes.string.isRequired,};
即將廢棄React.createClass
目前的版本中我們一共有三種聲明組件的方式:
- React.createClass
- JavaScript Function
- ES6 Class
因為之前JS當中並沒有類的概念,所以React在內部實現了一個createClass的方法,但現在ES6已經十分普及,對Class的支持已經比較完善,所以在之後的版本中,React會廢棄createClass這一方法。
當然,如果使用ES6 Class來聲明組件的話,之前的mixins就無法使用了,所以React還為createClass方法準備了一個獨立的包 create-react-class
// 15.4 以前var React = require("react");var Component = React.createClass({ mixins: [MixinA], render() { return <Child />; }});// 15.5 以後var React = require("react");var createReactClass = require("create-react-class");var Component = createReactClass({ mixins: [MixinA], render() { return <Child />; }});
以上是兩項最主要的改變,也是最影響我們已有代碼庫的改動。你仍然可以在15.5.0版本中使用這兩個API,但是在控制台會看到輸出的廢棄警告,並且在接下來的16.0.0版本中,這兩個API會被徹底移除。
不過同學們也不同擔心,這次改動之後,將可以「無痛直升」16.0.0版本。
另外還有一些有關測試和附件的改動就不再贅述,想要了解的同學可以去閱讀React今天發布的博客React v15.5.0
React 16
- ReactDOM將會正式啟用Fiber演算法,不過API並不會改變,所以使用體驗,你可能只會感覺到React更快,渲染更流暢了。關於Fiber的詳細介紹,可以看這一篇討論如何理解 React Fiber 架構?
- React.createClass/PropTypes/React.createFactory/React.DOM.* 幾個方法將會被移除分離到單獨的包中。
其餘的改動和開發計劃可以在React 15.5 and 16 Umbrella · Issue #8854 · facebook/react查閱。
你也可以通過下面的命令提前體驗react 16.0.0版本
npm install react@16.0.0-alpha.8
React 16 正式版本有望在今夏發布:
歡迎在評論區參與討論。
推薦閱讀:
※React Conf 2017 不能錯過的大起底——Day 1!
※解析 Redux 源碼
※我對Flexbox布局模式的理解
※從0到1,細說 React 開發環境搭建那點事
※Immutable 詳解及 React 中實踐