02.html 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203
  1. <!DOCTYPE HTML>
  2. <html lang="" >
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  6. <title>React/React Native 的ES5 ES6写法对照表 · 代码收集</title>
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  8. <meta name="description" content="">
  9. <meta name="generator" content="GitBook 3.1.1">
  10. <link rel="stylesheet" href="../../gitbook/style.css">
  11. <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search-pro/search.css">
  12. <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
  13. <meta name="HandheldFriendly" content="true"/>
  14. <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
  15. <meta name="apple-mobile-web-app-capable" content="yes">
  16. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  17. <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
  18. <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
  19. <link rel="next" href="03.html" />
  20. <link rel="prev" href="01.html" />
  21. </head>
  22. <body>
  23. <div class="gb-page-wrapper">
  24. <header class="gb-page-header">
  25. <div class="container">
  26. <div id="book-search-input" role="search">
  27. <input type="text" placeholder="Type to search" />
  28. </div>
  29. <a href="../.." class="logo">
  30. <img src="../../gitbook/images/logo/128.png">
  31. <h1>代码收集</h1>
  32. </a>
  33. <a href="https://github.com/seamong/myBlogs/blob/master/doc/JavaScript/cases/02.md" target="_blank" class="btn btn-link pull-right hidden-xs">
  34. <i class="octicon octicon-mark-github"></i> 在GitHub编辑本页
  35. </a>
  36. <a href="../../faq.md" class="btn btn-link pull-right hidden-xs">
  37. F.A.Q
  38. </a>
  39. <a href="https://github.com/seamong/myBlogs/README.md" target="_blank" class="btn btn-link pull-right hidden-xs">
  40. 当前版本0.0.1
  41. </a>
  42. </div>
  43. </header>
  44. <div class="gb-page-body">
  45. <div class="gb-page-inner">
  46. <div class="container">
  47. <div class="row">
  48. <div class="col-md-3">
  49. <div class="panel panel-default">
  50. <div class="panel-heading">
  51. <h3 class="panel-title">介绍</h3>
  52. </div>
  53. <div class="list-group">
  54. <a href="../../" class="list-group-item ">
  55. 关于本文档
  56. </a>
  57. </div>
  58. </div>
  59. <div class="panel panel-default">
  60. <div class="panel-heading">
  61. <h3 class="panel-title">JavaScript</h3>
  62. </div>
  63. <div class="list-group">
  64. <a href="../principle/" class="list-group-item ">
  65. <i class="octicon octicon-chevron-right"></i>
  66. 原理解析
  67. </a>
  68. <a href="./" class="list-group-item ">
  69. <i class="octicon octicon-chevron-down"></i>
  70. 案例解析
  71. </a>
  72. <a href="0.html" class="list-group-item ">
  73. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  74. 动态替换图片
  75. </a>
  76. <a href="01.html" class="list-group-item ">
  77. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  78. 原生Ajax学习
  79. </a>
  80. <a href="02.html" class="list-group-item active">
  81. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  82. React/React Native 的ES5 ES6写法对照表
  83. </a>
  84. <a href="03.html" class="list-group-item ">
  85. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  86. 战舰游戏
  87. </a>
  88. <a href="04.html" class="list-group-item ">
  89. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  90. 正则截取指定字符串
  91. </a>
  92. <a href="05.html" class="list-group-item ">
  93. <i class="octicon octicon-chevron-down" style="opacity: 0"></i>
  94. 常用功能收集
  95. </a>
  96. </div>
  97. </div>
  98. <div class="panel panel-default">
  99. <div class="panel-heading">
  100. <h3 class="panel-title">angular</h3>
  101. </div>
  102. <div class="list-group">
  103. <a href="../../angular/study_notes/" class="list-group-item ">
  104. <i class="octicon octicon-chevron-right"></i>
  105. Study notes
  106. </a>
  107. <a href="../../angular/ng.html" class="list-group-item ">
  108. ng
  109. </a>
  110. </div>
  111. </div>
  112. <div class="panel panel-default">
  113. <div class="panel-heading">
  114. <h3 class="panel-title">css</h3>
  115. </div>
  116. <div class="list-group">
  117. <a href="../../css/principle/" class="list-group-item ">
  118. 原理解析
  119. </a>
  120. <a href="../../css/cases/" class="list-group-item ">
  121. <i class="octicon octicon-chevron-right"></i>
  122. 案例收集
  123. </a>
  124. </div>
  125. </div>
  126. <div class="panel panel-default">
  127. <div class="panel-heading">
  128. <h3 class="panel-title">vue</h3>
  129. </div>
  130. <div class="list-group">
  131. <a href="../../vue/components/" class="list-group-item ">
  132. <i class="octicon octicon-chevron-right"></i>
  133. components
  134. </a>
  135. <a href="../../vue/router/" class="list-group-item ">
  136. <i class="octicon octicon-chevron-right"></i>
  137. router
  138. </a>
  139. <a href="../../vue/vuex/" class="list-group-item ">
  140. VUE
  141. </a>
  142. </div>
  143. </div>
  144. <div class="panel panel-default">
  145. <div class="panel-heading">
  146. <h3 class="panel-title">ubuntu</h3>
  147. </div>
  148. <div class="list-group">
  149. <a href="../../ubuntu/serves/" class="list-group-item ">
  150. <i class="octicon octicon-chevron-right"></i>
  151. 服务器生存指南
  152. </a>
  153. <a href="../../ubuntu/instruction.html" class="list-group-item ">
  154. 常用指令
  155. </a>
  156. </div>
  157. </div>
  158. <div class="panel panel-default">
  159. <div class="panel-heading">
  160. <h3 class="panel-title">GIT</h3>
  161. </div>
  162. <div class="list-group">
  163. <a href="../../git/git.html" class="list-group-item ">
  164. git 命令
  165. </a>
  166. </div>
  167. </div>
  168. <div class="panel panel-default">
  169. <div class="list-group">
  170. <a href="../../other/faq.html" class="list-group-item ">
  171. FAQ
  172. </a>
  173. <a href="../../other/examples.html" class="list-group-item ">
  174. Examples
  175. </a>
  176. </div>
  177. </div>
  178. </div>
  179. <div class="col-md-9">
  180. <div id="book-search-results">
  181. <div class="search-noresults">
  182. <div class="gb-markdown book-page-inner">
  183. <h1 id="reactreact-native-&#x7684;es5-es6&#x5199;&#x6CD5;&#x5BF9;&#x7167;&#x8868;">React/React Native &#x7684;ES5 ES6&#x5199;&#x6CD5;&#x5BF9;&#x7167;&#x8868;</h1>
  184. <h2 id="&#x6765;&#x6E90;&#xFF1A;">&#x6765;&#x6E90;&#xFF1A;<br></h2>
  185. <blockquote>
  186. <p><a href="https://babeljs.io/blog/2015/06/07/react-on-es6-plus" target="_blank">React on ES6+</a><br><a href="http://bbs.reactnative.cn/topic/15/react-react-native-%E7%9A%84es5-es6%E5%86%99%E6%B3%95%E5%AF%B9%E7%85%A7%E8%A1%A8" target="_blank">React/React Native &#x7684;ES5 ES6&#x5199;&#x6CD5;&#x5BF9;&#x7167;&#x8868;</a></p>
  187. </blockquote>
  188. <h2 id="class&#x5B9A;&#x4E49;&#x8BED;&#x6CD5;">class&#x5B9A;&#x4E49;&#x8BED;&#x6CD5;</h2>
  189. <blockquote>
  190. <p>&#x503C;&#x5F97;&#x6CE8;&#x610F;&#x7684;&#x662F;&#xFF0C;&#x6211;&#x4EEC;&#x5DF2;&#x7ECF;&#x5220;&#x9664;&#x4E86;&#x4E24;&#x4E2A;&#x62EC;&#x53F7;&#x548C;&#x4E00;&#x4E2A;&#x540E;&#x7F00;&#x5206;&#x53F7;&#xFF0C;&#x800C;&#x5BF9;&#x4E8E;&#x6BCF;&#x4E2A;&#x58F0;&#x660E;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x6211;&#x4EEC;&#x90FD;&#x7701;&#x7565;&#x4E86;&#x4E00;&#x4E2A;&#x5192;&#x53F7;&#xFF0C;&#x4E00;&#x4E2A;function&#x5173;&#x952E;&#x5B57;&#x548C;&#x4E00;&#x4E2A;&#x9017;&#x53F7;&#x3002;</p>
  191. </blockquote>
  192. <pre><code class="lang-javascript"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Photo</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span> </span>{
  193. render() {
  194. <span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">{this.props.caption}</span> <span class="hljs-attr">src</span>=<span class="hljs-string">{this.props.src}</span> /&gt;</span>
  195. }
  196. }
  197. // The ES5 way
  198. var Photo = React.createClass({
  199. handleDoubleTap: function(e) { ... }
  200. render: function() { ... }
  201. })
  202. //ThE ES6 way
  203. class Photo extends React.Component {
  204. handleDoubleTap(e) { ... }
  205. render() { ... }
  206. }
  207. </span></code></pre>
  208. <h2 id="&#x751F;&#x547D;&#x5468;&#x671F;&#x65B9;&#x6CD5;">&#x751F;&#x547D;&#x5468;&#x671F;&#x65B9;&#x6CD5;</h2>
  209. <blockquote>
  210. <p>&#x6240;&#x6709;&#x7684;&#x751F;&#x547D;&#x5468;&#x671F;&#x65B9;&#x6CD5;&#xFF0C;&#x4F46;&#x53EF;&#x4EE5;&#x5B9A;&#x4E49;&#x4E3A;&#x4F7F;&#x7528;&#x65B0;&#x7684;&#x7C7B;&#x8BED;&#x6CD5;&#x671F;&#x671B;&#x7684;&#x3002;&#x8BE5;&#x8BFE;&#x7A0B;constructor&#x73B0;&#x5728;&#x627F;&#x62C5;&#x4EE5;&#x524D;&#x586B;&#x5199;&#x7684;&#x89D2;&#x8272;componentWillMount&#xFF1A;</p>
  211. </blockquote>
  212. <pre><code class="lang-javascript"><span class="hljs-comment">// es5</span>
  213. <span class="hljs-keyword">var</span> EmbedModal = React.createClass({
  214. componentWillMount: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{ ... }
  215. })
  216. <span class="hljs-comment">// es6</span>
  217. <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">EmbedModal</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">createClass</span> (
  218. <span class="hljs-title">construtor</span>(<span class="hljs-title">props</span>) </span>{
  219. <span class="hljs-keyword">super</span>(props);
  220. <span class="hljs-comment">// Operations usually carried out in componentWillMount go here</span>
  221. }
  222. )
  223. </code></pre>
  224. <h2 id="&#x5C5E;&#x6027;&#x521D;&#x59CB;&#x5316;">&#x5C5E;&#x6027;&#x521D;&#x59CB;&#x5316;</h2>
  225. <blockquote>
  226. <p>ES7&#x5C5E;&#x6027;&#x521D;&#x59CB;&#x5316;&#x5668;&#x5728;&#x7C7B;&#x7684;&#x6784;&#x9020;&#x51FD;&#x6570;&#x4E2D;&#x8FD0;&#x884C;&#xFF0C;&#x5176;&#x4E2D;this&#x6307;&#x7684;&#x662F;&#x6B63;&#x5728;&#x6784;&#x5EFA;&#x7684;&#x7C7B;&#x7684;&#x5B9E;&#x4F8B;&#xFF0C;&#x6240;&#x4EE5;&#x521D;&#x59CB;&#x72B6;&#x6001;&#x4ECD;&#x7136;&#x53EF;&#x4EE5;&#x4F9D;&#x8D56;&#x4E8E;this.props&#x3002;&#x503C;&#x5F97;&#x6CE8;&#x610F;&#x7684;&#x662F;&#xFF0C;&#x6211;&#x4EEC;&#x4E0D;&#x518D;&#x9700;&#x8981;&#x6839;&#x636E;&#x5438;&#x6C14;&#x529F;&#x80FD;&#x5B9A;&#x4E49;&#x9053;&#x5177;&#x9ED8;&#x8BA4;&#x503C;&#x548C;&#x521D;&#x59CB;&#x72B6;&#x6001;&#x5BF9;&#x8C61;&#x3002;</p>
  227. </blockquote>
  228. <pre><code class="lang-javascript"><span class="hljs-comment">// es5 </span>
  229. <span class="hljs-keyword">var</span> Video = React.createClass({
  230. getDefaultProps: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
  231. <span class="hljs-keyword">return</span> {
  232. autoPlay: flase,
  233. maxLoops: <span class="hljs-number">10</span>,
  234. };
  235. },
  236. getInitalState: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
  237. <span class="hljs-keyword">return</span> {
  238. loopsRemaining: <span class="hljs-keyword">this</span>.props.maxloops,
  239. };
  240. },
  241. propsTypes: {
  242. autoPlay: React.PropsTypes.bool.isRequired,
  243. maxloops: React.PropsTypes.number.isRequired,
  244. posterFrameSrc: React.PropsTypes.string.isRequired,
  245. videoSrc: React.PropsTypes.string.isRequired
  246. },
  247. });
  248. <span class="hljs-comment">// es6</span>
  249. <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Video</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span> </span>{
  250. <span class="hljs-keyword">static</span> defaultProps = {
  251. autoPlay: <span class="hljs-literal">false</span>,
  252. maxloops: <span class="hljs-number">10</span>
  253. }
  254. <span class="hljs-keyword">static</span> propsTypes = {
  255. autoPlay: React.PropsTypes.bool.isRequired,
  256. maxloops: React.propsTypes.number.isRequired,
  257. posterFrameSrc: React.PropsTypes.string.isRequired,
  258. videoSrc: React.PropsTypes.string.isRequired
  259. }
  260. state = {
  261. loopsRemaining: <span class="hljs-keyword">this</span>.props.maxloops,
  262. }
  263. }
  264. </code></pre>
  265. <h2 id="&#x7BAD;&#x5934;&#x51FD;&#x6570;&#x8BF4;&#x660E;">&#x7BAD;&#x5934;&#x51FD;&#x6570;&#x8BF4;&#x660E;</h2>
  266. <blockquote>
  267. <p>&#x8BE5;React.createClass&#x65B9;&#x6CD5;&#x7528;&#x4E8E;&#x5BF9;&#x7EC4;&#x4EF6;&#x7684;&#x5B9E;&#x4F8B;&#x65B9;&#x6CD5;&#x6267;&#x884C;&#x4E00;&#x4E9B;&#x989D;&#x5916;&#x7684;&#x7ED1;&#x5B9A;&#x5DE5;&#x4F5C;&#xFF0C;&#x4EE5;&#x786E;&#x4FDD;&#x5176;&#x4E2D;&#x7684;this&#x5173;&#x952E;&#x5B57;&#x5C06;&#x5F15;&#x7528;&#x8BE5;&#x7EC4;&#x4EF6;&#x7684;&#x5B9E;&#x4F8B;&#x3002;</p>
  268. </blockquote>
  269. <pre><code class="lang-javascript"><span class="hljs-comment">// &#x81EA;&#x52A8;&#x7ED1;&#x5B9A;React.createClass</span>
  270. <span class="hljs-keyword">var</span> PostInfo = React.createClass({
  271. handleOptionsButtonClick: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>) </span>{
  272. <span class="hljs-comment">// &#x8FD9;&#x91CC;&#xFF0C;&apos;this&apos; &#x662F;&#x6307;&#x7EC4;&#x4EF6;&#x5B9E;&#x4F8B;&#x3002;</span>
  273. <span class="hljs-keyword">this</span>.setState({showOptionModal: <span class="hljs-literal">true</span>});
  274. },
  275. });
  276. </code></pre>
  277. <blockquote>
  278. <p>&#x7531;&#x4E8E;&#x6211;&#x4EEC;React.createClass&#x5728;&#x4F7F;&#x7528;ES6 +&#x7C7B;&#x8BED;&#x6CD5;&#x5B9A;&#x4E49;&#x7EC4;&#x4EF6;&#x65F6;&#x4E0D;&#x6D89;&#x53CA;&#x8BE5;&#x65B9;&#x6CD5;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x624B;&#x52A8;&#x7ED1;&#x5B9A;&#x5B9E;&#x4F8B;&#x65B9;&#x6CD5;&#xFF0C;&#x65E0;&#x8BBA;&#x6211;&#x4EEC;&#x60F3;&#x8981;&#x8FD9;&#x79CD;&#x884C;&#x4E3A;&#xFF1A;</p>
  279. </blockquote>
  280. <pre><code class="lang-javascript"><span class="hljs-comment">// &#x624B;&#x52A8;&#x7ED1;&#x5B9A;&#xFF0C;&#x65E0;&#x8BBA;&#x4F60;&#x662F;&#x5426;&#x9700;&#x8981;</span>
  281. <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PostInfo</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span> </span>{
  282. construtor(props) {
  283. <span class="hljs-keyword">super</span>(props);
  284. <span class="hljs-comment">// &#x624B;&#x52A8;&#x5C06;&#x6B64;&#x65B9;&#x6CD5;&#x7ED1;&#x5B9A;&#x5230;&#x7EC4;&#x4EF6;&#x5B9E;&#x4F8B;&#x4E2D;&#x2026;</span>
  285. <span class="hljs-keyword">this</span>.handleOptionsButtonClick = <span class="hljs-keyword">this</span>.handleOptionsButtonClick.bind(<span class="hljs-keyword">this</span>);
  286. }
  287. handleOptionsButtonClick(e) {
  288. <span class="hljs-comment">// &#x2026;&#x4E3A;&#x4E86;&#x786E;&#x4FDD;&apos;this&apos;&#x6307;&#x7684;&#x662F;&#x7EC4;&#x4EF6;&#x5B9E;&#x4F8B;&#x3002;</span>
  289. <span class="hljs-keyword">this</span>.setState({showOptionsModal: <span class="hljs-literal">true</span>});
  290. }
  291. }
  292. </code></pre>
  293. <blockquote>
  294. <p>&#x5E78;&#x8FD0;&#x7684;&#x662F;&#xFF0C;&#x901A;&#x8FC7;&#x7EC4;&#x5408;&#x4E24;&#x4E2A;ES6 +&#x529F;&#x80FD; - &#x7BAD;&#x5934;&#x51FD;&#x6570;&#x548C;&#x5C5E;&#x6027;&#x521D;&#x59CB;&#x503C;&#x8BBE;&#x7F6E; - &#x9009;&#x62E9;&#x52A0;&#x5165;&#x5230;&#x7EC4;&#x4EF6;&#x5B9E;&#x4F8B;&#x7684;&#x7ED1;&#x5B9A;&#x53D8;&#x5F97;&#x8F7B;&#x800C;&#x6613;&#x4E3E;&#xFF1A;</p>
  295. </blockquote>
  296. <pre><code class="lang-javascript"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PostInfo</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span> </span>{
  297. handleOptionsButtonClick = (e) =&gt; {
  298. <span class="hljs-keyword">this</span>.setState({showOptionsModal: <span class="hljs-literal">true</span>});
  299. }
  300. }
  301. </code></pre>
  302. <blockquote>
  303. <p>ES6&#x7BAD;&#x5934;&#x51FD;&#x6570;&#x7684;&#x4E3B;&#x4F53;&#x5177;&#x6709;&#x4E0E;&#x5B83;&#x4EEC;&#x5468;&#x56F4;this&#x7684;&#x4EE3;&#x7801;&#x76F8;&#x540C;&#x7684;&#x8BCD;&#x6C47;&#xFF0C;&#x8FD9;&#x4F7F;&#x5F97;&#x6211;&#x4EEC;&#x83B7;&#x5F97;&#x4E86;&#x671F;&#x671B;&#x7684;&#x7ED3;&#x679C;&#xFF0C;&#x56E0;&#x4E3A;ES7&#x5C5E;&#x6027;&#x521D;&#x59CB;&#x5316;&#x5668;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x7684;&#x65B9;&#x5F0F;&#x3002;&#x5728;&#x7F69;&#x4E0B;&#x770B;&#xFF0C;&#x770B;&#x770B;&#x4E3A;&#x4EC0;&#x4E48;&#x8FD9;&#x4E2A;&#x5DE5;&#x4F5C;&#x3002;</p>
  304. </blockquote>
  305. <h2 id="&#x52A8;&#x6001;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x548C;&#x6A21;&#x677F;&#x5B57;&#x7B26;&#x4E32;">&#x52A8;&#x6001;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x548C;&#x6A21;&#x677F;&#x5B57;&#x7B26;&#x4E32;</h2>
  306. <blockquote>
  307. <p>&#x5176;&#x4E2D;&#x7684;&#x589E;&#x5F3A;&#x5BF9;&#x8C61;&#x6587;&#x672C;&#x5305;&#x62EC;&#x5206;&#x914D;&#x7ED9;&#x6D3E;&#x751F;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x7684;&#x80FD;&#x529B;&#x3002;&#x6211;&#x4EEC;&#x539F;&#x672C;&#x53EF;&#x4EE5;&#x505A;&#x8FD9;&#x6837;&#x7684;&#x4E8B;&#x60C5;&#x6765;&#x8BBE;&#x5B9A;&#x4E00;&#x4E2A;&#x72B6;&#x6001;&#xFF1A;
  308. ```js
  309. var From = React.createClass({
  310. onChange: function(inputName, e) {
  311. var stateToSet = {};
  312. stateToSet[inputName + &apos;Value&apos;] = e.targe.value;
  313. this.setState(stateToset);
  314. },
  315. });
  316. // &#x73B0;&#x5728;&#xFF0C;&#x6211;&#x4EEC;&#x6709;&#x80FD;&#x529B;&#x6784;&#x5EFA;&#x5728;&#x8FD0;&#x884C;&#x65F6;&#x7531;JavaScript&#x8868;&#x8FBE;&#x5F0F;&#x51B3;&#x5B9A;&#x5176;&#x5C5E;&#x6027;&#x540D;&#x79F0;&#x7684;&#x5BF9;&#x8C61;&#x3002;&#x5728;&#x8FD9;&#x91CC;&#xFF0C;&#x6211;&#x4EEC;&#x4F7F;&#x7528;&#x6A21;&#x677F;&#x5B57;&#x7B26;&#x4E32;&#x6765;&#x786E;&#x5B9A;&#x8981;&#x8BBE;&#x7F6E;&#x7684;&#x5C5E;&#x6027;&#xFF1A;
  317. class From extends React.Component {
  318. onChange(inpuntName, e){
  319. this.setState({</p>
  320. </blockquote>
  321. <pre><code> [`$(inputName)value`]: e.targe.value,
  322. });
  323. }
  324. </code></pre><p>}</p>
  325. <pre><code>
  326. ## &#x89E3;&#x6784;&#x548C;&#x4F20;&#x64AD;&#x5C5E;&#x6027;
  327. &gt;&#x901A;&#x5E38;&#x5728;&#x7EC4;&#x6210;&#x7EC4;&#x4EF6;&#x65F6;&#xFF0C;&#x6211;&#x4EEC;&#x53EF;&#x80FD;&#x5E0C;&#x671B;&#x5C06;&#x5927;&#x90E8;&#x5206;&#x7236;&#x7EC4;&#x4EF6;&#x7684;&#x9053;&#x5177;&#x4F20;&#x9012;&#x7ED9;&#x5B50;&#x7EC4;&#x4EF6;&#xFF0C;&#x4F46;&#x5E76;&#x4E0D;&#x662F;&#x5168;&#x90E8;&#x3002;&#x5C06;ES6 + &#x89E3;&#x6784;&#x4E0E;JSX &#x4F20;&#x64AD;&#x5C5E;&#x6027;&#x76F8;&#x7ED3;&#x5408;&#xFF0C;&#x65E0;&#x9700;&#x4EEA;&#x5F0F;&#x5373;&#x53EF;&#x5B9E;&#x73B0;&#xFF1A;
  328. ```js
  329. class AutoloadingPostsGrid extends React.Component {
  330. render() {
  331. const {
  332. className,
  333. ...others // &#x5305;&#x542B;&#x6240;&#x6709;&#x7279;&#x6027;this.props&#x9664;&#x4E86;&#x7C7B;&#x540D;
  334. } = this.props;
  335. return (
  336. &lt;div className={className}&gt;
  337. &lt;PostsGrid {...others} /&gt;
  338. &lt;button onClick={this.handleLoadMoreClick}&gt;Load more&lt;/button&gt;
  339. &lt;/div&gt;
  340. );
  341. }
  342. }
  343. // &#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x5C06;JSX&#x4F20;&#x64AD;&#x5C5E;&#x6027;&#x4E0E;&#x5E38;&#x89C4;&#x5C5E;&#x6027;&#x7ED3;&#x5408;&#x8D77;&#x6765;&#xFF0C;&#x5229;&#x7528;&#x7B80;&#x5355;&#x7684;&#x4F18;&#x5148;&#x7EA7;&#x89C4;&#x5219;&#x6765;&#x5B9E;&#x73B0;&#x8986;&#x76D6;&#x548C;&#x9ED8;&#x8BA4;&#x503C;&#x3002;&#x8BE5;&#x5143;&#x7D20;&#x5C06;&#x83B7;&#x5F97;className&#x201C;&#x8986;&#x76D6;&#x201D;&#xFF0C;&#x5373;&#x4F7F;&#x5B58;&#x5728;&#x4E00;&#x4E2A;className&#x8D22;&#x4EA7;this.props&#xFF1A;
  344. &lt;div {...this.props} className=&quot;override&quot;&gt;
  345. ...
  346. &lt;/div&gt;
  347. // This element will regularly have the &#x201C;base&#x201D; unless there exists a property in to override it:
  348. &lt;div className=&quot;base&quot; {...this.props}&gt;
  349. ...
  350. &lt;/div&gt;
  351. </code></pre><h2 id="&#x6A21;&#x5757;">&#x6A21;&#x5757;</h2>
  352. <pre><code class="lang-javascript"><span class="hljs-comment">// &#x5F15;&#x7528;</span>
  353. <span class="hljs-comment">// es5</span>
  354. <span class="hljs-keyword">var</span> React = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;react&quot;</span>);
  355. <span class="hljs-keyword">var</span> {
  356. Component,
  357. PropsTypes
  358. } = React; <span class="hljs-comment">//&#x5F15;&#x7528;react&#x62BD;&#x8C61;&#x7EC4;&#x4EF6;</span>
  359. <span class="hljs-keyword">var</span> ReactNative = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;react-native&quot;</span>);
  360. <span class="hljs-keyword">var</span> {
  361. Image,
  362. Text,
  363. } = ReactNative; <span class="hljs-comment">// &#x5F15;&#x7528;&#x5177;&#x4F53;&#x7684;React Native&#x7EC4;&#x4EF6;</span>
  364. <span class="hljs-comment">// es6 import&#x5199;&#x6CD5;&#x66F4;&#x4E3A;&#x6807;&#x51C6;</span>
  365. <span class="hljs-keyword">import</span> React, {
  366. Component,
  367. PropsTypes,
  368. } <span class="hljs-keyword">from</span> <span class="hljs-string">&apos;react&apos;</span>;
  369. <span class="hljs-keyword">import</span> {
  370. imange&#xFF0C;
  371. Text,
  372. } <span class="hljs-keyword">from</span> <span class="hljs-string">&apos;react-native&apos;</span>
  373. </code></pre>
  374. <h2 id="&#x5BFC;&#x51FA;&#x5355;&#x4E2A;&#x7C7B;">&#x5BFC;&#x51FA;&#x5355;&#x4E2A;&#x7C7B;</h2>
  375. <blockquote>
  376. <p>&#x5728;ES5&#x91CC;&#xFF0C;&#x8981;&#x5BFC;&#x51FA;&#x4E00;&#x4E2A;&#x7C7B;&#x7ED9;&#x522B;&#x7684;&#x6A21;&#x5757;&#x7528;&#xFF0C;&#x4E00;&#x822C;&#x901A;&#x8FC7;module.exports&#x6765;&#x5BFC;&#x51FA;</p>
  377. </blockquote>
  378. <pre><code>// es5
  379. var MyComponent = React.createClass({
  380. // &#x51FD;&#x6570;
  381. })
  382. // es6
  383. export default class MyComponent extends Component{
  384. // &#x51FD;&#x6570;
  385. }
  386. // &#x5F15;&#x7528; class
  387. // es5
  388. var MyComponent = require((&apos;./MyComponent&apos;));
  389. // es6
  390. import MyComponent from &apos;./MyComponent&apos;;
  391. </code></pre><h2 id="&#x5B9A;&#x4E49;&#x7EC4;&#x4EF6;">&#x5B9A;&#x4E49;&#x7EC4;&#x4EF6;</h2>
  392. <blockquote>
  393. <p>es5 &#x5728;ES5&#x91CC;&#xFF0C;&#x901A;&#x5E38;&#x901A;&#x8FC7;React.createClass&#x6765;&#x5B9A;&#x4E49;&#x4E00;&#x4E2A;&#x7EC4;&#x4EF6;&#x7C7B;&#xFF0C;&#x50CF;&#x8FD9;&#x6837;&#xFF1A;</p>
  394. </blockquote>
  395. <pre><code class="lang-javascript"><span class="hljs-keyword">var</span> Photo = React.createClass({
  396. render: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
  397. <span class="hljs-keyword">return</span> (
  398. <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">Image</span> <span class="hljs-attr">source</span>=<span class="hljs-string">{this.props.source}</span> /&gt;</span>
  399. )
  400. }
  401. })
  402. </span></code></pre>
  403. <blockquote>
  404. <p>&#x5728;ES6&#x91CC;&#xFF0C;&#x6211;&#x4EEC;&#x901A;&#x8FC7;&#x5B9A;&#x4E49;&#x4E00;&#x4E2A;&#x7EE7;&#x627F;&#x81EA;React.Component&#x7684;class&#x6765;&#x5B9A;&#x4E49;&#x4E00;&#x4E2A;&#x7EC4;&#x4EF6;&#x7C7B;&#xFF0C;&#x50CF;&#x8FD9;&#x6837;&#xFF1A;</p>
  405. </blockquote>
  406. <pre><code class="lang-javascript"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Photo</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span> </span>{
  407. render() {
  408. <span class="hljs-keyword">return</span> (
  409. <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">Image</span> <span class="hljs-attr">source</span>=<span class="hljs-string">{this.props.source}</span> /&gt;</span>
  410. );
  411. }
  412. }
  413. </span></code></pre>
  414. <h2 id="&#x7ED9;&#x7EC4;&#x4EF6;&#x5B9A;&#x4E49;&#x65B9;&#x6CD5;">&#x7ED9;&#x7EC4;&#x4EF6;&#x5B9A;&#x4E49;&#x65B9;&#x6CD5;</h2>
  415. <blockquote>
  416. <p>&#x7ED9;&#x7EC4;&#x4EF6;&#x5B9A;&#x4E49;&#x65B9;&#x6CD5;&#x4E0D;&#x518D;&#x7528; &#x540D;&#x5B57;: function()&#x7684;&#x5199;&#x6CD5;&#xFF0C;&#x800C;&#x662F;&#x76F4;&#x63A5;&#x7528;&#x540D;&#x5B57;()&#xFF0C;&#x5728;&#x65B9;&#x6CD5;&#x7684;&#x6700;&#x540E;&#x4E5F;&#x4E0D;&#x80FD;&#x6709;&#x9017;&#x53F7;&#x4E86;&#x3002;</p>
  417. </blockquote>
  418. <pre><code class="lang-javascript"><span class="hljs-comment">// es5</span>
  419. <span class="hljs-keyword">var</span> Photo = React.createClass({
  420. componentWillMount: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
  421. <span class="hljs-comment">// &#x51FD;&#x6570;</span>
  422. },
  423. render: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
  424. <span class="hljs-keyword">return</span> (
  425. &lt;Image source={this.props.source} /&gt;
  426. );
  427. },
  428. });
  429. // es6
  430. class Photo extends React.Component {
  431. componentWillMount() {
  432. // &#x51FD;&#x6570;
  433. },
  434. render() {
  435. return (
  436. &lt;Image source={this.props.source} /&gt;
  437. );
  438. }
  439. }
  440. </code></pre>
  441. <h2 id="&#x5B9A;&#x4E49;&#x7EC4;&#x4EF6;&#x7684;&#x5C5E;&#x6027;&#x7C7B;&#x578B;&#x548C;&#x9ED8;&#x8BA4;&#x5C5E;&#x6027;">&#x5B9A;&#x4E49;&#x7EC4;&#x4EF6;&#x7684;&#x5C5E;&#x6027;&#x7C7B;&#x578B;&#x548C;&#x9ED8;&#x8BA4;&#x5C5E;&#x6027;</h2>
  442. <blockquote>
  443. <p>&#x5728;ES5&#x91CC;&#xFF0C;&#x5C5E;&#x6027;&#x7C7B;&#x578B;&#x548C;&#x9ED8;&#x8BA4;&#x5C5E;&#x6027;&#x5206;&#x522B;&#x901A;&#x8FC7;propTypes&#x6210;&#x5458;&#x548C;getDefaultProps&#x65B9;&#x6CD5;&#x6765;&#x5B9E;&#x73B0;</p>
  444. </blockquote>
  445. <pre><code class="lang-javascript"><span class="hljs-comment">// es5</span>
  446. <span class="hljs-keyword">var</span> video = React.createClass({
  447. getDefaultProps: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
  448. <span class="hljs-keyword">return</span> {
  449. autoPlay: <span class="hljs-literal">false</span>,
  450. maxloops: <span class="hljs-number">10</span>,
  451. };
  452. },
  453. PropsTypes: {
  454. autoPlay: React.PropsTypes.bool.isRequired,
  455. maxloops: React.PropsTypes.number.isRequired,
  456. posterFrameSrc: React.PropsTypes.string.isRequired,
  457. videoSrc: React.PropsTypes.string.isRequired,
  458. },
  459. render: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
  460. <span class="hljs-keyword">return</span>: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
  461. &lt;View /&gt;
  462. };
  463. }
  464. })
  465. </code></pre>
  466. <blockquote>
  467. <p>&#x5728;ES6&#x91CC;&#xFF0C;&#x53EF;&#x4EE5;&#x7EDF;&#x4E00;&#x4F7F;&#x7528;static&#x6210;&#x5458;&#x6765;&#x5B9E;&#x73B0;</p>
  468. </blockquote>
  469. <pre><code class="lang-javascript"><span class="hljs-comment">//es6</span>
  470. <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Video</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span> </span>{
  471. <span class="hljs-keyword">static</span> defaultProps = {
  472. autoPlay: flase,
  473. maxloops: <span class="hljs-number">10</span>,
  474. }; <span class="hljs-comment">// &#x6CE8;&#x610F;&#x8FD9;&#x91CC;&#x6709;&#x5206;&#x53F7;</span>
  475. <span class="hljs-keyword">static</span> propsTypes = {
  476. autoPlay: React.PropsTypes.bool.isRequired,
  477. maxloops: React.PropsTypes.number.isRequired,
  478. posterFrameSrc: React.PropsTypes.string.isRequired,
  479. videoSrc: React.PropsTypes.string.isRequired,
  480. }; <span class="hljs-comment">// &#x6CE8;&#x610F;&#x8FD9;&#x91CC;&#x6709;&#x5206;&#x53F7;</span>
  481. render() {
  482. <span class="hljs-keyword">return</span> (
  483. <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">view</span> /&gt;</span>
  484. )
  485. }
  486. }
  487. </span></code></pre>
  488. <blockquote>
  489. <p>&#x4E5F;&#x6709;&#x4EBA;&#x8FD9;&#x4E48;&#x5199;&#xFF0C;&#x867D;&#x7136;&#x4E0D;&#x63A8;&#x8350;&#xFF0C;&#x4F46;&#x8BFB;&#x5230;&#x4EE3;&#x7801;&#x7684;&#x65F6;&#x5019;&#x4F60;&#x5E94;&#x5F53;&#x80FD;&#x660E;&#x767D;&#x5B83;&#x7684;&#x610F;&#x601D;&#xFF1A;</p>
  490. </blockquote>
  491. <pre><code class="lang-javascript"><span class="hljs-comment">//es6</span>
  492. <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Videlo</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span> </span>{
  493. render() {
  494. <span class="hljs-keyword">return</span> (
  495. <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">Video</span> /&gt;</span>
  496. );
  497. }
  498. }
  499. Video.defauleftProps = {
  500. autoPlay: false,
  501. maxloops: 10,
  502. };
  503. Video.propsTypes = {
  504. autoPlay: React.PropsTypes.bool.isRequired,
  505. maxloops: React.PropsTypes.number.isRequired,
  506. posterFrameSrc: React.PropsTypes.string.isRequired,
  507. videoSrc: React.PropsTypes.string.isRequired,
  508. }
  509. // &#x6CE8;&#x610F;: &#x5BF9;React&#x5F00;&#x53D1;&#x8005;&#x800C;&#x8A00;&#xFF0C;static&#x6210;&#x5458;&#x5728;IE10&#x53CA;&#x4E4B;&#x524D;&#x7248;&#x672C;&#x4E0D;&#x80FD;&#x88AB;&#x7EE7;&#x627F;&#xFF0C;&#x800C;&#x5728;IE11&#x548C;&#x5176;&#x5B83;&#x6D4F;&#x89C8;&#x5668;&#x4E0A;&#x53EF;&#x4EE5;&#xFF0C;&#x8FD9;&#x6709;&#x65F6;&#x5019;&#x4F1A;&#x5E26;&#x6765;&#x4E00;&#x4E9B;&#x95EE;&#x9898;&#x3002;React Native&#x5F00;&#x53D1;&#x8005;&#x53EF;&#x4EE5;&#x4E0D;&#x7528;&#x62C5;&#x5FC3;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#x3002;
  510. </span></code></pre>
  511. <h2 id="&#x521D;&#x59CB;&#x5316;state">&#x521D;&#x59CB;&#x5316;STATE</h2>
  512. <pre><code class="lang-javascript"><span class="hljs-comment">// es5</span>
  513. <span class="hljs-keyword">var</span> video = React.createClass({
  514. getInitalState: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
  515. <span class="hljs-keyword">return</span> {
  516. loopsRemaining: <span class="hljs-keyword">this</span>.props.maxloops,
  517. };
  518. }
  519. })
  520. <span class="hljs-comment">// ES6&#x4E0B;&#xFF0C;&#x6709;&#x4E24;&#x79CD;&#x5199;&#x6CD5;&#xFF1A;</span>
  521. <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Video</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span> </span>{
  522. state = {
  523. loopsRemaining: <span class="hljs-keyword">this</span>.props.maxloops,
  524. }
  525. }
  526. <span class="hljs-comment">// &#x4E0D;&#x8FC7;&#x6211;&#x4EEC;&#x63A8;&#x8350;&#x66F4;&#x6613;&#x7406;&#x89E3;&#x7684;&#x5728;&#x6784;&#x9020;&#x51FD;&#x6570;&#x4E2D;&#x521D;&#x59CB;&#x5316;&#xFF08;&#x8FD9;&#x6837;&#x4F60;&#x8FD8;&#x53EF;&#x4EE5;&#x6839;&#x636E;&#x9700;&#x8981;&#x505A;&#x4E00;&#x4E9B;&#x8BA1;&#x7B97;&#xFF09;&#xFF1A;</span>
  527. <span class="hljs-comment">// es6</span>
  528. <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Video</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span> </span>{
  529. construtor(props){
  530. <span class="hljs-keyword">super</span>(props);
  531. <span class="hljs-keyword">this</span>.state = {
  532. loopsRemaining: <span class="hljs-keyword">this</span>.props.maxloops,
  533. }
  534. }
  535. }
  536. </code></pre>
  537. <h2 id="&#x628A;&#x65B9;&#x6CD5;&#x4F5C;&#x4E3A;&#x56DE;&#x8C03;&#x63D0;&#x4F9B;">&#x628A;&#x65B9;&#x6CD5;&#x4F5C;&#x4E3A;&#x56DE;&#x8C03;&#x63D0;&#x4F9B;</h2>
  538. <blockquote>
  539. <p>&#x5F88;&#x591A;&#x4E60;&#x60EF;&#x4E8E;ES6&#x7684;&#x7528;&#x6237;&#x53CD;&#x800C;&#x4E0D;&#x7406;&#x89E3;&#x5728;ES5&#x4E0B;&#x53EF;&#x4EE5;&#x8FD9;&#x4E48;&#x505A;&#xFF1A;</p>
  540. </blockquote>
  541. <pre><code class="lang-javascript"><span class="hljs-keyword">var</span> PostInfo = React.createClass({
  542. handleOptionsButtonClick: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>) </span>{
  543. <span class="hljs-comment">// Here,&apos;this&apos; refers to the component instance</span>
  544. <span class="hljs-keyword">this</span>.setState({showOptionModel: <span class="hljs-literal">true</span>});
  545. },
  546. render: <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
  547. <span class="hljs-keyword">return</span> (
  548. <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">TouchableHighlight</span> <span class="hljs-attr">onPress</span>=<span class="hljs-string">{this.handleOptionsButtonClick}</span> &gt;</span>
  549. <span class="hljs-tag">&lt;<span class="hljs-name">Text</span>&gt;</span>{this.props.label}<span class="hljs-tag">&lt;/<span class="hljs-name">Text</span>&gt;</span>
  550. <span class="hljs-tag">&lt;/<span class="hljs-name">TouchableHighlight</span>&gt;</span></span>
  551. )
  552. },
  553. });
  554. </code></pre>
  555. <blockquote>
  556. <p>&#x5728;ES5&#x4E0B;&#xFF0C;React.createClass&#x4F1A;&#x628A;&#x6240;&#x6709;&#x7684;&#x65B9;&#x6CD5;&#x90FD;bind&#x4E00;&#x904D;&#xFF0C;&#x8FD9;&#x6837;&#x53EF;&#x4EE5;&#x63D0;&#x4EA4;&#x5230;&#x4EFB;&#x610F;&#x7684;&#x5730;&#x65B9;&#x4F5C;&#x4E3A;&#x56DE;&#x8C03;&#x51FD;&#x6570;&#xFF0C;&#x800C;this&#x4E0D;&#x4F1A;&#x53D8;&#x5316;&#x3002;&#x4F46;&#x5B98;&#x65B9;&#x73B0;&#x5728;&#x9010;&#x6B65;&#x8BA4;&#x4E3A;&#x8FD9;&#x53CD;&#x800C;&#x662F;&#x4E0D;&#x6807;&#x51C6;&#x3001;&#x4E0D;&#x6613;&#x7406;&#x89E3;&#x7684;&#x3002;</p>
  557. </blockquote>
  558. <p>&#x5728;ES6&#x4E0B;&#xFF0C;&#x4F60;&#x9700;&#x8981;&#x901A;&#x8FC7;bind&#x6765;&#x7ED1;&#x5B9A;this&#x5F15;&#x7528;&#xFF0C;&#x6216;&#x8005;&#x4F7F;&#x7528;&#x7BAD;&#x5934;&#x51FD;&#x6570;&#xFF08;&#x5B83;&#x4F1A;&#x7ED1;&#x5B9A;&#x5F53;&#x524D;scope&#x7684;this&#x5F15;&#x7528;&#xFF09;&#x6765;&#x8C03;&#x7528;</p>
  559. <pre><code class="lang-javascript"><span class="hljs-comment">// es6</span>
  560. <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PostInfo</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span>
  561. </span>{
  562. handleOptionsButtonClick(e){
  563. <span class="hljs-keyword">this</span>.setState({showOptionsModal: <span class="hljs-literal">true</span>});
  564. }
  565. render() {
  566. <span class="hljs-keyword">return</span> (
  567. <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">TouchableHighlight</span>
  568. <span class="hljs-attr">onpress</span>=<span class="hljs-string">{this.handleOptionsButtonClick.bind(this)}</span>
  569. <span class="hljs-attr">onpress</span>=<span class="hljs-string">{e=</span>&gt;</span>this.handleOptionsButtonClick(e)}
  570. &gt;
  571. <span class="hljs-tag">&lt;<span class="hljs-name">Text</span>&gt;</span>{this.props.label}<span class="hljs-tag">&lt;/<span class="hljs-name">Text</span>&gt;</span>
  572. <span class="hljs-tag">&lt;/<span class="hljs-name">TouchableHighlight</span>&gt;</span></span>
  573. )
  574. },
  575. }
  576. </code></pre>
  577. <h2 id="&#x7BAD;&#x5934;&#x51FD;&#x6570;">&#x7BAD;&#x5934;&#x51FD;&#x6570;</h2>
  578. <blockquote>
  579. <p>&#x7BAD;&#x5934;&#x51FD;&#x6570;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x5728;&#x8FD9;&#x91CC;&#x5B9A;&#x4E49;&#x4E86;&#x4E00;&#x4E2A;&#x4E34;&#x65F6;&#x7684;&#x51FD;&#x6570;&#xFF0C;&#x7BAD;&#x5934;&#x51FD;&#x6570;&#x7684;&#x7BAD;&#x5934;=&gt;&#x4E4B;&#x524D;&#x662F;&#x4E00;&#x4E2A;&#x7A7A;&#x62EC;&#x53F7;&#x3001;&#x5355;&#x4E2A;&#x7684;&#x53C2;&#x6570;&#x540D;&#x3001;&#x6216;&#x7528;&#x62EC;&#x53F7;&#x62EC;&#x8D77;&#x7684;&#x591A;&#x4E2A;&#x53C2;&#x6570;&#x540D;&#xFF0C;&#x800C;&#x7BAD;&#x5934;&#x4E4B;&#x540E;&#x53EF;&#x4EE5;&#x662F;&#x4E00;&#x4E2A;&#x8868;&#x8FBE;&#x5F0F;&#xFF08;&#x4F5C;&#x4E3A;&#x51FD;&#x6570;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#xFF09;&#xFF0C;&#x6216;&#x8005;&#x662F;&#x7528;&#x82B1;&#x62EC;&#x53F7;&#x62EC;&#x8D77;&#x7684;&#x51FD;&#x6570;&#x4F53;&#xFF08;&#x9700;&#x8981;&#x81EA;&#x884C;&#x901A;&#x8FC7;return&#x6765;&#x8FD4;&#x56DE;&#x503C;&#xFF0C;&#x5426;&#x5219;&#x8FD4;&#x56DE;&#x7684;&#x662F;undefined&#xFF09;&#x3002;</p>
  580. </blockquote>
  581. <pre><code class="lang-javascript"><span class="hljs-comment">// &#x7BAD;&#x5934;&#x51FD;&#x6570;&#x5B9E;&#x4F8B;</span>
  582. ()=&gt;<span class="hljs-number">1</span>
  583. v=&gt;v+<span class="hljs-number">1</span>
  584. (a,b)=&gt;a+b
  585. ()=&gt;{
  586. alert(<span class="hljs-string">&apos;foo&apos;</span>);
  587. }
  588. e=&gt;{
  589. <span class="hljs-keyword">if</span> (e == <span class="hljs-number">0</span>){
  590. <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
  591. }
  592. <span class="hljs-keyword">return</span> <span class="hljs-number">1000</span>/e;
  593. }
  594. </code></pre>
  595. <blockquote>
  596. <p>&#x9700;&#x8981;&#x6CE8;&#x610F;&#x7684;&#x662F;&#xFF0C;&#x4E0D;&#x8BBA;&#x662F;bind&#x8FD8;&#x662F;&#x7BAD;&#x5934;&#x51FD;&#x6570;&#xFF0C;&#x6BCF;&#x6B21;&#x88AB;&#x6267;&#x884C;&#x90FD;&#x8FD4;&#x56DE;&#x7684;&#x662F;&#x4E00;&#x4E2A;&#x65B0;&#x7684;&#x51FD;&#x6570;&#x5F15;&#x7528;&#xFF0C;&#x56E0;&#x6B64;&#x5982;&#x679C;&#x4F60;&#x8FD8;&#x9700;&#x8981;&#x51FD;&#x6570;&#x7684;&#x5F15;&#x7528;&#x53BB;&#x505A;&#x4E00;&#x4E9B;&#x522B;&#x7684;&#x4E8B;&#x60C5;&#xFF08;&#x8B6C;&#x5982;&#x5378;&#x8F7D;&#x76D1;&#x542C;&#x5668;&#xFF09;&#xFF0C;&#x90A3;&#x4E48;&#x4F60;&#x5FC5;&#x987B;&#x81EA;&#x5DF1;&#x4FDD;&#x5B58;&#x8FD9;&#x4E2A;&#x5F15;&#x7528;</p>
  597. </blockquote>
  598. <pre><code>// &#x9519;&#x8BEF;&#x7684;&#x505A;&#x6CD5;
  599. class PaussMenu extends React.Component{
  600. componentWillMount() {
  601. AppStateIOS.addEventListener(&apos;change&apos;, this.onAppPaused.bind(this));
  602. }
  603. componentDidUnmount() {
  604. AppStateIOS.removeEventListener(&apos;change&apos;, this.onAppPaused.buid(this));
  605. }
  606. onAppPaused(event){
  607. }
  608. }
  609. // &#x6B63;&#x786E;&#x7684;&#x505A;&#x6CD5;
  610. class PaussMenu extends React.Component{
  611. construtor(props) {
  612. super(props);
  613. this._OnAppPaused = this.onAppPaused.bind(this);
  614. }
  615. componentWillMount() {
  616. AppStateIOS.addEventListener(&apos;change&apos;, this._OnAppPaused);
  617. }
  618. componentDidUnmount() {
  619. AppStateIOS.removeEventListener(&apos;change&apos;, this_onAppPaused);
  620. }
  621. onAppPaused(event) {
  622. }
  623. }
  624. // &#x4ECE;&#x8FD9;&#x4E2A;&#x5E16;&#x5B50;[&#x8FD9;&#x4E2A;&#x5E16;&#x5B50;](http://www.tuicool.com/articles/Rj6RFnm)&#x4E2D;&#x6211;&#x4EEC;&#x8FD8;&#x5B66;&#x4E60;&#x5230;&#x4E00;&#x79CD;&#x65B0;&#x7684;&#x505A;&#x6CD5;&#xFF1A;
  625. // &#x6B63;&#x786E;&#x7684;&#x505A;&#x6CD5;
  626. class PaussMenu extends React.createClass{
  627. componentWillMount() {
  628. AppStateIOS.addEventListener(&apos;change&apos;, this.onAppPaused);
  629. }
  630. componentDidUnmount() {
  631. AppStateIOS.removeEventListener(&apos;change&apos;, this.onAppPaused);
  632. }
  633. onAppPaused = (event) =&gt; {
  634. // &#x628A;&#x65B9;&#x6CD5;&#x76F4;&#x63A5;&#x4F5C;&#x4E3A;&#x4E00;&#x4E2A;arrow function&#x7684;&#x5C5E;&#x6027;&#x6765;&#x5B9A;&#x4E49;&#xFF0C;&#x521D;&#x59CB;&#x5316;&#x7684;&#x65F6;&#x5019;&#x5C31;&#x7ED1;&#x5B9A;&#x597D;&#x4E86;this&#x7684;&#x6307;&#x9488;
  635. }
  636. }
  637. </code></pre><h2 id="mixins">Mixins</h2>
  638. <blockquote>
  639. <p>&#x5728;ES5&#x4E0B;&#xFF0C;&#x6211;&#x4EEC;&#x7ECF;&#x5E38;&#x4F7F;&#x7528;minxin&#x6765;&#x4E3A;&#x6211;&#x4EEC;&#x7684;&#x7C7B;&#x6DFB;&#x52A0;&#x4E00;&#x4E9B;&#x65B0;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x8B6C;&#x5982;PureRenderMinxin
  640. ```
  641. var PurRenderMixin = require(&apos;react-addins-pure-render-minxin&apos;);
  642. React.createClass({
  643. mixin: [PurRenderMixin],</p>
  644. </blockquote>
  645. <pre><code>render: function() {
  646. return &lt;div className={this.props.className}&gt;foo&lt;/div&gt;;
  647. }
  648. </code></pre><p>})</p>
  649. <pre><code>
  650. &gt; &#x7136;&#x800C;&#x73B0;&#x5728;&#x5B98;&#x65B9;&#x5DF2;&#x7ECF;&#x4E0D;&#x518D;&#x6253;&#x7B97;&#x5728;ES6&#x91CC;&#x7EE7;&#x7EED;&#x63A8;&#x884C;Mixin&#xFF0C;&#x4ED6;&#x4EEC;&#x8BF4;&#xFF1A;Mixins Are Dead. Long Live Composition&#x3002;&lt;br/&gt;
  651. &#x5C3D;&#x7BA1;&#x5982;&#x679C;&#x8981;&#x7EE7;&#x7EED;&#x4F7F;&#x7528;mixin&#xFF0C;&#x8FD8;&#x662F;&#x6709;&#x4E00;&#x4E9B;&#x7B2C;&#x4E09;&#x65B9;&#x7684;&#x65B9;&#x6848;&#x53EF;&#x4EE5;&#x7528;&#xFF0C;&#x8B6C;&#x5982;&#x8FD9;&#x4E2A;&#x65B9;&#x6848;&lt;br&gt;
  652. &#x4E0D;&#x8FC7;&#x5B98;&#x65B9;&#x63A8;&#x8350;&#xFF0C;&#x5BF9;&#x4E8E;&#x5E93;&#x7F16;&#x5199;&#x8005;&#x800C;&#x8A00;&#xFF0C;&#x5E94;&#x5F53;&#x5C3D;&#x5FEB;&#x653E;&#x5F03;Mixin&#x7684;&#x7F16;&#x5199;&#x65B9;&#x5F0F;&#xFF0C;&#x6587;&#x4E2D;&#x63D0;&#x5230;Sebastian Markb&#xE5;ge&#x7684;&#x4E00;&#x6BB5;&#x4EE3;&#x7801;&#x63A8;&#x8350;&#x4E86;&#x4E00;&#x79CD;&#x65B0;&#x7684;&#x7F16;&#x7801;&#x65B9;&#x5F0F;&#xFF1A;
  653. </code></pre><p>//Enhance.js
  654. import { Component } from &apos;React&apos;</p>
  655. <p>extends var Enhance = ComposedComponent =&gt; class extends Component {
  656. construtor() {
  657. this.state = {dtaa:null}
  658. }
  659. componentDidUnmount() {
  660. this.setState({ data: &apos;Hello&apos; });
  661. }
  662. render() {
  663. renturn <composedcomponent {...this.props}="" data="{this.state.data}">
  664. }
  665. }</composedcomponent></p>
  666. <p>// HigherOrderComponent.js
  667. import { Enhance } from &quot;./Enhance&quot;;</p>
  668. <p>class MyComponent {
  669. render() {
  670. if (!this.data) return <div>Waiting...</div>;
  671. return <div>{this.data}</div>;
  672. }
  673. }</p>
  674. <p>export defaule Enhance(MyComponent); // Enhance component
  675. //&#x7528;&#x4E00;&#x4E2A;&#x201C;&#x589E;&#x5F3A;&#x51FD;&#x6570;&#x201D;&#xFF0C;&#x6765;&#x67D0;&#x4E2A;&#x7C7B;&#x589E;&#x52A0;&#x4E00;&#x4E9B;&#x65B9;&#x6CD5;&#xFF0C;&#x5E76;&#x4E14;&#x8FD4;&#x56DE;&#x4E00;&#x4E2A;&#x65B0;&#x7C7B;&#xFF0C;&#x8FD9;&#x65E0;&#x7591;&#x80FD;&#x5B9E;&#x73B0;mixin&#x6240;&#x5B9E;&#x73B0;&#x7684;&#x5927;&#x90E8;&#x5206;&#x9700;&#x6C42;&#x3002;</p>
  676. <pre><code>
  677. ## ES6+&#x5E26;&#x6765;&#x7684;&#x5176;&#x5B83;&#x597D;&#x5904;
  678. ### &#x89E3;&#x6784;&amp;&#x5C5E;&#x6027;&#x5EF6;&#x5C55;
  679. &gt; &#x7ED3;&#x5408;&#x4F7F;&#x7528;ES6+&#x7684;&#x89E3;&#x6784;&#x548C;&#x5C5E;&#x6027;&#x5EF6;&#x5C55;&#xFF0C;&#x6211;&#x4EEC;&#x7ED9;&#x5B69;&#x5B50;&#x4F20;&#x9012;&#x4E00;&#x6279;&#x5C5E;&#x6027;&#x66F4;&#x4E3A;&#x65B9;&#x4FBF;&#x4E86;&#x3002;&#x8FD9;&#x4E2A;&#x4F8B;&#x5B50;&#x628A;className&#x4EE5;&#x5916;&#x7684;&#x6240;&#x6709;&#x5C5E;&#x6027;&#x4F20;&#x9012;&#x7ED9;div&#x6807;&#x7B7E;&#xFF1A;
  680. </code></pre><p>class AutoloadingPostsGrid extends React.Component {
  681. render() {
  682. var {
  683. className,
  684. ...others,
  685. } = this.props;
  686. return (
  687. <div classname="{className}">
  688. <postsgrid {...others}="">
  689. <button onclick="{this.handleOptionsButtonClick}">Load more</button>
  690. </postsgrid></div>
  691. );
  692. }
  693. }</p>
  694. <pre><code>
  695. &gt; &#x4E0B;&#x9762;&#x8FD9;&#x79CD;&#x5199;&#x6CD5;&#xFF0C;&#x5219;&#x662F;&#x4F20;&#x9012;&#x6240;&#x6709;&#x5C5E;&#x6027;&#x7684;&#x540C;&#x65F6;&#xFF0C;&#x7528;&#x8986;&#x76D6;&#x65B0;&#x7684;className&#x503C;&#xFF1A;
  696. </code></pre><p><div {...this.props}="" classname="override">
  697. ...
  698. </div></p>
  699. <pre><code>
  700. &gt; &#x8FD9;&#x4E2A;&#x4F8B;&#x5B50;&#x5219;&#x76F8;&#x53CD;&#xFF0C;&#x5982;&#x679C;&#x5C5E;&#x6027;&#x4E2D;&#x6CA1;&#x6709;&#x5305;&#x542B;className&#xFF0C;&#x5219;&#x63D0;&#x4F9B;&#x9ED8;&#x8BA4;&#x7684;&#x503C;&#xFF0C;&#x800C;&#x5982;&#x679C;&#x5C5E;&#x6027;&#x4E2D;&#x5DF2;&#x7ECF;&#x5305;&#x542B;&#x4E86;&#xFF0C;&#x5219;&#x4F7F;&#x7528;&#x5C5E;&#x6027;&#x4E2D;&#x7684;&#x503C;
  701. </code></pre><p><div classname="base" {...this.props}="">
  702. ...
  703. </div>
  704. ```</p>
  705. </div>
  706. <hr>
  707. <div class="btn-group btn-group-justified">
  708. <a class="btn" href="01.html"><b>上一页:</b> 原生Ajax学习</a>
  709. <a class="btn" href="03.html"><b>下一页:</b> 战舰游戏</a>
  710. </div>
  711. </div>
  712. <div class="search-results">
  713. <div class="has-results">
  714. <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
  715. <ul class="search-results-list"></ul>
  716. </div>
  717. <div class="no-results">
  718. <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
  719. </div>
  720. </div>
  721. </div>
  722. </div>
  723. </div>
  724. </div>
  725. </div>
  726. </div>
  727. <footer class="gb-page-footer">
  728. <div class="container">
  729. <ul class="menu">
  730. <li class="pull-right">
  731. <span class="service-info">Copyright GitBook 2018</span>
  732. </li>
  733. <li>
  734. <a href="#">Return to the top</a>
  735. </li>
  736. <li>
  737. <a href="#">Updated May 30th 18</a>
  738. </li>
  739. </ul>
  740. </div>
  741. </footer>
  742. </div>
  743. <script src="../../gitbook/gitbook.js"></script>
  744. <script src="../../gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
  745. <script src="../../gitbook/gitbook-plugin-search-pro/search.js"></script>
  746. <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
  747. <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
  748. <script>
  749. (function() {
  750. gitbook.page.hasChanged({"page":{"title":"React/React Native 的ES5 ES6写法对照表","level":"2.2.3","depth":2,"next":{"title":"战舰游戏","level":"2.2.4","depth":2,"path":"JavaScript/cases/03.md","ref":"JavaScript/cases/03.md","articles":[]},"previous":{"title":"原生Ajax学习","level":"2.2.2","depth":2,"path":"JavaScript/cases/01.md","ref":"JavaScript/cases/01.md","articles":[]},"dir":"ltr"},"config":{"plugins":["theme-official@2.1.1","-sharing","-fontsettings","sitemap","-search","search-pro"],"root":"./docs/","styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"sitemap":{"hostname":"https://blog.honghaitao.net/"},"search-pro":{"cutWordLib":"nodejieba","defineWord":["小需求","基础建设"]},"highlight":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"theme-official":{},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{"version":"0.0.1"},"title":"代码收集","gitbook":"3.1.1"},"file":{"path":"JavaScript/cases/02.md","mtime":"2018-05-30T08:23:34.364Z","type":"markdown"},"gitbook":{"version":"3.1.1","time":"2018-05-30T08:28:30.284Z"},"basePath":"../..","book":{"language":""}});
  751. })();
  752. </script>
  753. </body>
  754. </html>