diff --git a/404.html b/404.html index d84af23704..2ef40ca463 100644 --- a/404.html +++ b/404.html @@ -63,7 +63,7 @@ @@ -122,7 +122,7 @@ Facebook Open Source diff --git a/acknowledgements.html b/acknowledgements.html index 14f74d7331..24cdf53180 100644 --- a/acknowledgements.html +++ b/acknowledgements.html @@ -63,7 +63,7 @@ @@ -1534,7 +1534,7 @@ Facebook Open Source diff --git a/blog/2013/06/02/jsfiddle-integration.html b/blog/2013/06/02/jsfiddle-integration.html index e063c269a8..ccb07bc274 100644 --- a/blog/2013/06/02/jsfiddle-integration.html +++ b/blog/2013/06/02/jsfiddle-integration.html @@ -12,7 +12,7 @@ - JSFiddle just announced support for React. This is an exciting news as it makes collaboration on snippets of code a lot easier. You can play around this base React JSFiddle, fork it and share it! A fiddle without JSX is also available. + @@ -64,7 +64,7 @@ @@ -180,7 +180,7 @@ Facebook Open Source diff --git a/blog/2013/06/05/why-react.html b/blog/2013/06/05/why-react.html index 0599f2c44b..5bf58ef21e 100644 --- a/blog/2013/06/05/why-react.html +++ b/blog/2013/06/05/why-react.html @@ -65,7 +65,7 @@ and why would you want to use it? @@ -257,7 +257,7 @@ but if you are interested in the nuts and bolts Facebook Open Source diff --git a/blog/2013/06/12/community-roundup.html b/blog/2013/06/12/community-roundup.html index eabe70bc4a..e8e7e6b39f 100644 --- a/blog/2013/06/12/community-roundup.html +++ b/blog/2013/06/12/community-roundup.html @@ -64,7 +64,7 @@ @@ -217,7 +217,7 @@ Facebook Open Source diff --git a/blog/2013/06/19/community-roundup-2.html b/blog/2013/06/19/community-roundup-2.html index 9bd4f422d9..b6eaca2cfb 100644 --- a/blog/2013/06/19/community-roundup-2.html +++ b/blog/2013/06/19/community-roundup-2.html @@ -64,7 +64,7 @@ @@ -240,7 +240,7 @@ Facebook Open Source diff --git a/blog/2013/06/21/react-v0-3-3.html b/blog/2013/06/21/react-v0-3-3.html index 1429206d65..d6fc78c5af 100644 --- a/blog/2013/06/21/react-v0-3-3.html +++ b/blog/2013/06/21/react-v0-3-3.html @@ -64,7 +64,7 @@ @@ -190,7 +190,7 @@ Facebook Open Source diff --git a/blog/2013/06/27/community-roundup-3.html b/blog/2013/06/27/community-roundup-3.html index 2f28b96847..099eb5f735 100644 --- a/blog/2013/06/27/community-roundup-3.html +++ b/blog/2013/06/27/community-roundup-3.html @@ -64,7 +64,7 @@ @@ -249,7 +249,7 @@ Facebook Open Source diff --git a/blog/2013/07/02/react-v0-4-autobind-by-default.html b/blog/2013/07/02/react-v0-4-autobind-by-default.html index ac2494a9c8..d6e8910220 100644 --- a/blog/2013/07/02/react-v0-4-autobind-by-default.html +++ b/blog/2013/07/02/react-v0-4-autobind-by-default.html @@ -64,7 +64,7 @@ @@ -206,7 +206,7 @@ Facebook Open Source diff --git a/blog/2013/07/03/community-roundup-4.html b/blog/2013/07/03/community-roundup-4.html index bb8fa55384..3d2f83f782 100644 --- a/blog/2013/07/03/community-roundup-4.html +++ b/blog/2013/07/03/community-roundup-4.html @@ -64,7 +64,7 @@ @@ -235,7 +235,7 @@ Facebook Open Source diff --git a/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html b/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html index a0adae050b..20aeab77af 100644 --- a/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html +++ b/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html @@ -12,7 +12,7 @@ - @@ -64,7 +64,7 @@ @@ -217,7 +217,7 @@ Facebook Open Source diff --git a/blog/2013/07/17/react-v0-4-0.html b/blog/2013/07/17/react-v0-4-0.html index 1cb01ccf08..e375230086 100644 --- a/blog/2013/07/17/react-v0-4-0.html +++ b/blog/2013/07/17/react-v0-4-0.html @@ -64,7 +64,7 @@ @@ -207,7 +207,7 @@ If you were using React without JSX previously, your code should still work. diff --git a/blog/2013/07/23/community-roundup-5.html b/blog/2013/07/23/community-roundup-5.html index 0e7015e091..f8ce646c1e 100644 --- a/blog/2013/07/23/community-roundup-5.html +++ b/blog/2013/07/23/community-roundup-5.html @@ -12,7 +12,7 @@ - React Facebook Page along with the React v0.4 launch. 700 people already liked it to get updated on the project :) + @@ -64,7 +64,7 @@ @@ -264,7 +264,7 @@ Facebook Open Source diff --git a/blog/2013/07/26/react-v0-4-1.html b/blog/2013/07/26/react-v0-4-1.html index a6476a7638..eb05f57610 100644 --- a/blog/2013/07/26/react-v0-4-1.html +++ b/blog/2013/07/26/react-v0-4-1.html @@ -64,7 +64,7 @@ @@ -191,7 +191,7 @@ Facebook Open Source diff --git a/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails.html b/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails.html index d35b731e04..29fdc3db8c 100644 --- a/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails.html +++ b/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails.html @@ -12,7 +12,7 @@ - react-rails. + @@ -64,7 +64,7 @@ @@ -202,7 +202,7 @@ Facebook Open Source diff --git a/blog/2013/08/05/community-roundup-6.html b/blog/2013/08/05/community-roundup-6.html index 1f1acbbc04..e57cc66926 100644 --- a/blog/2013/08/05/community-roundup-6.html +++ b/blog/2013/08/05/community-roundup-6.html @@ -64,7 +64,7 @@ @@ -239,7 +239,7 @@ Facebook Open Source diff --git a/blog/2013/08/19/use-react-and-jsx-in-python-applications.html b/blog/2013/08/19/use-react-and-jsx-in-python-applications.html index 3125fc0069..090a39a836 100644 --- a/blog/2013/08/19/use-react-and-jsx-in-python-applications.html +++ b/blog/2013/08/19/use-react-and-jsx-in-python-applications.html @@ -12,7 +12,7 @@ - PyReact, which makes it easier to use React and JSX in your Python applications. It's designed to provide an API to transform your JSX files into JavaScript, as well as provide access to the latest React source files. + @@ -64,7 +64,7 @@ @@ -208,7 +208,7 @@ Facebook Open Source diff --git a/blog/2013/08/26/community-roundup-7.html b/blog/2013/08/26/community-roundup-7.html index 521817971c..a190c1b9b7 100644 --- a/blog/2013/08/26/community-roundup-7.html +++ b/blog/2013/08/26/community-roundup-7.html @@ -64,7 +64,7 @@ @@ -248,7 +248,7 @@ Facebook Open Source diff --git a/blog/2013/09/24/community-roundup-8.html b/blog/2013/09/24/community-roundup-8.html index 01255be27c..d795bc820a 100644 --- a/blog/2013/09/24/community-roundup-8.html +++ b/blog/2013/09/24/community-roundup-8.html @@ -64,7 +64,7 @@ @@ -228,7 +228,7 @@ Facebook Open Source diff --git a/blog/2013/10/03/community-roundup-9.html b/blog/2013/10/03/community-roundup-9.html index f2b6a72dd4..b39182c2c6 100644 --- a/blog/2013/10/03/community-roundup-9.html +++ b/blog/2013/10/03/community-roundup-9.html @@ -64,7 +64,7 @@ @@ -252,7 +252,7 @@ Facebook Open Source diff --git a/blog/2013/10/16/react-v0.5.0.html b/blog/2013/10/16/react-v0.5.0.html index 2c4f7d898f..730c82d2da 100644 --- a/blog/2013/10/16/react-v0.5.0.html +++ b/blog/2013/10/16/react-v0.5.0.html @@ -64,7 +64,7 @@ @@ -216,7 +216,7 @@ Facebook Open Source diff --git a/blog/2013/10/29/react-v0-5-1.html b/blog/2013/10/29/react-v0-5-1.html index 1e7a5f6b5e..508a35ea17 100644 --- a/blog/2013/10/29/react-v0-5-1.html +++ b/blog/2013/10/29/react-v0-5-1.html @@ -12,7 +12,7 @@ - Ben Alpert, Andrey Popp, and Laurence Rowe for their contributions! + @@ -64,7 +64,7 @@ @@ -187,7 +187,7 @@ Facebook Open Source diff --git a/blog/2013/11/06/community-roundup-10.html b/blog/2013/11/06/community-roundup-10.html index f40857b93d..3044776b64 100644 --- a/blog/2013/11/06/community-roundup-10.html +++ b/blog/2013/11/06/community-roundup-10.html @@ -64,7 +64,7 @@ @@ -283,7 +283,7 @@ Facebook Open Source diff --git a/blog/2013/11/18/community-roundup-11.html b/blog/2013/11/18/community-roundup-11.html index 49211cf68b..fa7937aca1 100644 --- a/blog/2013/11/18/community-roundup-11.html +++ b/blog/2013/11/18/community-roundup-11.html @@ -64,7 +64,7 @@ @@ -244,7 +244,7 @@ Is this some sort of template language? Specifically no. This might have been th Facebook Open Source diff --git a/blog/2013/12/18/react-v0.5.2-v0.4.2.html b/blog/2013/12/18/react-v0.5.2-v0.4.2.html index 77a36d1f32..0b9865af31 100644 --- a/blog/2013/12/18/react-v0.5.2-v0.4.2.html +++ b/blog/2013/12/18/react-v0.5.2-v0.4.2.html @@ -12,7 +12,7 @@ - @@ -64,7 +64,7 @@ @@ -186,7 +186,7 @@ Facebook Open Source diff --git a/blog/2013/12/19/react-v0.8.0.html b/blog/2013/12/19/react-v0.8.0.html index acd6c07309..4b0fc9ad5e 100644 --- a/blog/2013/12/19/react-v0.8.0.html +++ b/blog/2013/12/19/react-v0.8.0.html @@ -64,7 +64,7 @@ @@ -216,7 +216,7 @@ Facebook Open Source diff --git a/blog/2013/12/23/community-roundup-12.html b/blog/2013/12/23/community-roundup-12.html index f6e6e4976c..10cba161a2 100644 --- a/blog/2013/12/23/community-roundup-12.html +++ b/blog/2013/12/23/community-roundup-12.html @@ -12,7 +12,7 @@ - docs and do not hesitate to ask questions on the Google Group, IRC or Stack Overflow. We are trying our best to help you out! + @@ -64,7 +64,7 @@ @@ -246,7 +246,7 @@ componentDidUpdate: function() { Facebook Open Source diff --git a/blog/2013/12/30/community-roundup-13.html b/blog/2013/12/30/community-roundup-13.html index f584a78406..893fb8e46b 100644 --- a/blog/2013/12/30/community-roundup-13.html +++ b/blog/2013/12/30/community-roundup-13.html @@ -64,7 +64,7 @@ @@ -263,7 +263,7 @@ Facebook Open Source diff --git a/blog/2014/01/02/react-chrome-developer-tools.html b/blog/2014/01/02/react-chrome-developer-tools.html index e6746fdf58..f6c64bd5bd 100644 --- a/blog/2014/01/02/react-chrome-developer-tools.html +++ b/blog/2014/01/02/react-chrome-developer-tools.html @@ -12,7 +12,7 @@ - React Developer Tools, an extension to the Chrome Developer Tools. Download them from the Chrome Web Store. + @@ -64,7 +64,7 @@ @@ -187,7 +187,7 @@ Facebook Open Source diff --git a/blog/2014/01/06/community-roundup-14.html b/blog/2014/01/06/community-roundup-14.html index 51b57eb9df..2a5b65d3d7 100644 --- a/blog/2014/01/06/community-roundup-14.html +++ b/blog/2014/01/06/community-roundup-14.html @@ -64,7 +64,7 @@ @@ -240,7 +240,7 @@ rails s Facebook Open Source diff --git a/blog/2014/02/05/community-roundup-15.html b/blog/2014/02/05/community-roundup-15.html index 02bae558f3..958e2954d0 100644 --- a/blog/2014/02/05/community-roundup-15.html +++ b/blog/2014/02/05/community-roundup-15.html @@ -12,7 +12,7 @@ - @swannodette)'s introduction of Om in his post "The Future of Javascript MVC Frameworks". + @@ -64,7 +64,7 @@ @@ -278,7 +278,7 @@ Facebook Open Source diff --git a/blog/2014/02/15/community-roundup-16.html b/blog/2014/02/15/community-roundup-16.html index d3ef3603f1..40c0083a2e 100644 --- a/blog/2014/02/15/community-roundup-16.html +++ b/blog/2014/02/15/community-roundup-16.html @@ -12,7 +12,7 @@ - @@ -64,7 +64,7 @@ @@ -233,7 +233,7 @@ Facebook Open Source diff --git a/blog/2014/02/16/react-v0.9-rc1.html b/blog/2014/02/16/react-v0.9-rc1.html index bb3e066862..c91cab25ac 100644 --- a/blog/2014/02/16/react-v0.9-rc1.html +++ b/blog/2014/02/16/react-v0.9-rc1.html @@ -64,7 +64,7 @@ @@ -292,7 +292,7 @@ Minified build for production: diff --git a/blog/2014/02/20/react-v0.9.html b/blog/2014/02/20/react-v0.9.html index 4e2d0fe5e4..7e6d77b5eb 100644 --- a/blog/2014/02/20/react-v0.9.html +++ b/blog/2014/02/20/react-v0.9.html @@ -64,7 +64,7 @@ @@ -302,7 +302,7 @@ Minified build for production: diff --git a/blog/2014/02/24/community-roundup-17.html b/blog/2014/02/24/community-roundup-17.html index 7e34a3c7c0..3020dc5c40 100644 --- a/blog/2014/02/24/community-roundup-17.html +++ b/blog/2014/02/24/community-roundup-17.html @@ -64,7 +64,7 @@ @@ -220,7 +220,7 @@ Facebook Open Source diff --git a/blog/2014/03/14/community-roundup-18.html b/blog/2014/03/14/community-roundup-18.html index 1165c45a7f..3fdae2a218 100644 --- a/blog/2014/03/14/community-roundup-18.html +++ b/blog/2014/03/14/community-roundup-18.html @@ -64,7 +64,7 @@ @@ -249,7 +249,7 @@ Thomas Boyt (@thomasaboyt) wrote < Facebook Open Source diff --git a/blog/2014/03/19/react-v0.10-rc1.html b/blog/2014/03/19/react-v0.10-rc1.html index 835f3cf9fe..aec52e658f 100644 --- a/blog/2014/03/19/react-v0.10-rc1.html +++ b/blog/2014/03/19/react-v0.10-rc1.html @@ -12,7 +12,7 @@ - v0.9 has only been out for a month, but we’re getting ready to push out v0.10 already. Unlike v0.9 which took a long time, we don't have a long list of changes to talk about. + @@ -64,7 +64,7 @@ @@ -240,7 +240,7 @@ Minified build for production: diff --git a/blog/2014/03/21/react-v0.10.html b/blog/2014/03/21/react-v0.10.html index 2a3dcc4e94..ea2b5f09aa 100644 --- a/blog/2014/03/21/react-v0.10.html +++ b/blog/2014/03/21/react-v0.10.html @@ -12,7 +12,7 @@ - release candidate earlier this week, we're ready to call v0.10 done. The only major issue we discovered had to do with the react-tools package, which has been updated. We've copied over the changelog from the RC with some small clarifying changes. + @@ -64,7 +64,7 @@ @@ -240,7 +240,7 @@ Minified build for production: diff --git a/blog/2014/03/28/the-road-to-1.0.html b/blog/2014/03/28/the-road-to-1.0.html index ee5d0808d8..b781b64870 100644 --- a/blog/2014/03/28/the-road-to-1.0.html +++ b/blog/2014/03/28/the-road-to-1.0.html @@ -12,7 +12,7 @@ - several projects that we have planned to take us to 1.0 and beyond. Today I'm writing a bit more about them to give our users a better insight into our plans. + @@ -64,7 +64,7 @@ @@ -203,7 +203,7 @@ Facebook Open Source diff --git a/blog/2014/04/04/reactnet.html b/blog/2014/04/04/reactnet.html index e2607defbc..f1ea0805b4 100644 --- a/blog/2014/04/04/reactnet.html +++ b/blog/2014/04/04/reactnet.html @@ -13,7 +13,7 @@ ReactJS.NET, which makes it easier to use React and JSX +ReactJS.NET, which makes it easier to use React and JSX in .NET applications, focusing specifically on ASP.NET MVC web applications. It has several purposes: "> @@ -67,7 +67,7 @@ It has several purposes: @@ -210,7 +210,7 @@ report bugs on GitHub.

Facebook Open Source diff --git a/blog/2014/05/06/flux.html b/blog/2014/05/06/flux.html index e986e01d44..20c2563191 100644 --- a/blog/2014/05/06/flux.html +++ b/blog/2014/05/06/flux.html @@ -64,7 +64,7 @@ @@ -191,7 +191,7 @@ Facebook Open Source diff --git a/blog/2014/05/29/one-year-of-open-source-react.html b/blog/2014/05/29/one-year-of-open-source-react.html index 73b2f55cee..65963b9e42 100644 --- a/blog/2014/05/29/one-year-of-open-source-react.html +++ b/blog/2014/05/29/one-year-of-open-source-react.html @@ -64,7 +64,7 @@ @@ -184,7 +184,7 @@ Facebook Open Source diff --git a/blog/2014/06/27/community-roundup-19.html b/blog/2014/06/27/community-roundup-19.html index b3416a2273..fc0ed06971 100644 --- a/blog/2014/06/27/community-roundup-19.html +++ b/blog/2014/06/27/community-roundup-19.html @@ -12,8 +12,8 @@ - React Meetups! # -Ever wanted to find developers who also share the same interest in React than you? Recently, there has been a React Meetup in San Francisco (courtesy of Telmate), and one in London (courtesy of Stuart Harris, Cain Ullah and Zoe Merchant). These two events have been big successes; a second one in London is already planned. + @@ -65,7 +65,7 @@ Ever wanted to find developers who also share the same interest in React than yo @@ -218,7 +218,7 @@ Ever wanted to find developers who also share the same interest in React than yo Facebook Open Source diff --git a/blog/2014/07/13/react-v0.11-rc1.html b/blog/2014/07/13/react-v0.11-rc1.html index 962d07df33..7b7b5ffd12 100644 --- a/blog/2014/07/13/react-v0.11-rc1.html +++ b/blog/2014/07/13/react-v0.11-rc1.html @@ -64,7 +64,7 @@ @@ -301,7 +301,7 @@ Minified build for production: diff --git a/blog/2014/07/17/react-v0.11.html b/blog/2014/07/17/react-v0.11.html index 56285f79fe..791eaa3bd4 100644 --- a/blog/2014/07/17/react-v0.11.html +++ b/blog/2014/07/17/react-v0.11.html @@ -12,7 +12,7 @@ - Descriptors and Prop Type Validation. + @@ -64,7 +64,7 @@ @@ -316,7 +316,7 @@ Minified build for production: diff --git a/blog/2014/07/25/react-v0.11.1.html b/blog/2014/07/25/react-v0.11.1.html index bf702e1bfd..7a1904fb65 100644 --- a/blog/2014/07/25/react-v0.11.1.html +++ b/blog/2014/07/25/react-v0.11.1.html @@ -64,7 +64,7 @@ @@ -213,7 +213,7 @@ Minified build for production: diff --git a/blog/2014/07/28/community-roundup-20.html b/blog/2014/07/28/community-roundup-20.html index aa18ca9801..1fe59bafec 100644 --- a/blog/2014/07/28/community-roundup-20.html +++ b/blog/2014/07/28/community-roundup-20.html @@ -64,7 +64,7 @@ @@ -253,7 +253,7 @@ Facebook Open Source diff --git a/blog/2014/07/30/flux-actions-and-the-dispatcher.html b/blog/2014/07/30/flux-actions-and-the-dispatcher.html index cbe28afc48..20f8aff5b6 100644 --- a/blog/2014/07/30/flux-actions-and-the-dispatcher.html +++ b/blog/2014/07/30/flux-actions-and-the-dispatcher.html @@ -12,7 +12,7 @@ - Jing Chen presented Flux at the F8 conference, and since that time we've seen a lot of interest in it. We've also published an overview of Flux and a TodoMVC example, with an accompanying tutorial. + @@ -64,7 +64,7 @@ @@ -200,7 +200,7 @@ Facebook Open Source diff --git a/blog/2014/08/03/community-roundup-21.html b/blog/2014/08/03/community-roundup-21.html index 59d350f9e1..edd2876dea 100644 --- a/blog/2014/08/03/community-roundup-21.html +++ b/blog/2014/08/03/community-roundup-21.html @@ -12,8 +12,8 @@ - React Router # -Ryan Florence and Michael Jackson ported Ember's router to React in a project called React Router. This is a very good example of both communities working together to make the web better! + @@ -65,7 +65,7 @@ @@ -252,7 +252,7 @@ This is not the intended way to use React but can be useful as last resort if yo Facebook Open Source diff --git a/blog/2014/09/03/introducing-the-jsx-specification.html b/blog/2014/09/03/introducing-the-jsx-specification.html index 0a725e37c8..404fc64397 100644 --- a/blog/2014/09/03/introducing-the-jsx-specification.html +++ b/blog/2014/09/03/introducing-the-jsx-specification.html @@ -64,7 +64,7 @@ @@ -184,7 +184,7 @@ Facebook Open Source diff --git a/blog/2014/09/12/community-round-up-22.html b/blog/2014/09/12/community-round-up-22.html index 64737b631e..9d2c89ed96 100644 --- a/blog/2014/09/12/community-round-up-22.html +++ b/blog/2014/09/12/community-round-up-22.html @@ -64,7 +64,7 @@ @@ -256,7 +256,7 @@ Facebook Open Source diff --git a/blog/2014/09/16/react-v0.11.2.html b/blog/2014/09/16/react-v0.11.2.html index 73c05c403a..9573ff75c8 100644 --- a/blog/2014/09/16/react-v0.11.2.html +++ b/blog/2014/09/16/react-v0.11.2.html @@ -64,7 +64,7 @@ @@ -222,7 +222,7 @@ Minified build for production: diff --git a/blog/2014/09/24/testing-flux-applications.html b/blog/2014/09/24/testing-flux-applications.html index b3a27774d5..9609ae4703 100644 --- a/blog/2014/09/24/testing-flux-applications.html +++ b/blog/2014/09/24/testing-flux-applications.html @@ -12,7 +12,7 @@ - Flux documentation. + @@ -64,7 +64,7 @@ @@ -440,7 +440,7 @@ Facebook Open Source diff --git a/blog/2014/10/14/introducing-react-elements.html b/blog/2014/10/14/introducing-react-elements.html index 726f2851da..31378d0750 100644 --- a/blog/2014/10/14/introducing-react-elements.html +++ b/blog/2014/10/14/introducing-react-elements.html @@ -12,7 +12,7 @@ - jest unit testing easier, making classes simpler (in preparation for ES6 classes) and better integration with third-party languages! + @@ -64,7 +64,7 @@ @@ -320,7 +320,7 @@ Facebook Open Source diff --git a/blog/2014/10/16/react-v0.12-rc1.html b/blog/2014/10/16/react-v0.12-rc1.html index f24351eb80..bc3f9079c4 100644 --- a/blog/2014/10/16/react-v0.12-rc1.html +++ b/blog/2014/10/16/react-v0.12-rc1.html @@ -64,7 +64,7 @@ @@ -271,7 +271,7 @@ Minified build for production: diff --git a/blog/2014/10/17/community-roundup-23.html b/blog/2014/10/17/community-roundup-23.html index fbe3d9da22..9cd6071247 100644 --- a/blog/2014/10/17/community-roundup-23.html +++ b/blog/2014/10/17/community-roundup-23.html @@ -12,7 +12,7 @@ - Flux. If you expect to see diagrams showing arrows that all point in the same direction, you won't be disappointed! + @@ -64,7 +64,7 @@ @@ -290,7 +290,7 @@ Facebook Open Source diff --git a/blog/2014/10/27/react-js-conf.html b/blog/2014/10/27/react-js-conf.html index f1f3843af3..661ec97523 100644 --- a/blog/2014/10/27/react-js-conf.html +++ b/blog/2014/10/27/react-js-conf.html @@ -64,7 +64,7 @@ @@ -184,7 +184,7 @@ Facebook Open Source diff --git a/blog/2014/10/28/react-v0.12.html b/blog/2014/10/28/react-v0.12.html index 36320bee67..3c7ea44222 100644 --- a/blog/2014/10/28/react-v0.12.html +++ b/blog/2014/10/28/react-v0.12.html @@ -64,7 +64,7 @@ @@ -287,7 +287,7 @@ Minified build for production: diff --git a/blog/2014/11/24/react-js-conf-updates.html b/blog/2014/11/24/react-js-conf-updates.html index e3ad8cb7bc..815b4f09e4 100644 --- a/blog/2014/11/24/react-js-conf-updates.html +++ b/blog/2014/11/24/react-js-conf-updates.html @@ -12,8 +12,8 @@ - React.js Conf call for presenters submission deadline. We were -surprised to have received a total of one hundred talk proposals and were + @@ -66,7 +66,7 @@ amazed that 600 people requested to be notified when ticket go on sale. This is @@ -213,7 +213,7 @@ until the next conference. All the talks will be recorded and put online shortly Facebook Open Source diff --git a/blog/2014/11/25/community-roundup-24.html b/blog/2014/11/25/community-roundup-24.html index 605786ffa8..ddacd0add5 100644 --- a/blog/2014/11/25/community-roundup-24.html +++ b/blog/2014/11/25/community-roundup-24.html @@ -12,7 +12,7 @@ - Keep it Simple #"> + @@ -63,7 +63,7 @@ @@ -246,7 +246,7 @@ Facebook Open Source diff --git a/blog/2014/12/18/react-v0.12.2.html b/blog/2014/12/18/react-v0.12.2.html index 29c2b078d9..b81571d597 100644 --- a/blog/2014/12/18/react-v0.12.2.html +++ b/blog/2014/12/18/react-v0.12.2.html @@ -64,7 +64,7 @@ @@ -206,7 +206,7 @@ Minified build for production: diff --git a/blog/2014/12/19/react-js-conf-diversity-scholarship.html b/blog/2014/12/19/react-js-conf-diversity-scholarship.html index 88ef0a9adf..9f9df060fc 100644 --- a/blog/2014/12/19/react-js-conf-diversity-scholarship.html +++ b/blog/2014/12/19/react-js-conf-diversity-scholarship.html @@ -64,7 +64,7 @@ @@ -207,7 +207,7 @@ Facebook will make determinations on scholarship recipients in its sole discreti Facebook Open Source diff --git a/blog/2015/01/27/react-v0.13.0-beta-1.html b/blog/2015/01/27/react-v0.13.0-beta-1.html index a986d0a5f6..367ececba8 100644 --- a/blog/2015/01/27/react-v0.13.0-beta-1.html +++ b/blog/2015/01/27/react-v0.13.0-beta-1.html @@ -64,7 +64,7 @@ @@ -302,7 +302,7 @@ Facebook Open Source diff --git a/blog/2015/02/18/react-conf-roundup-2015.html b/blog/2015/02/18/react-conf-roundup-2015.html index 81f0e2b405..852d4c3e59 100644 --- a/blog/2015/02/18/react-conf-roundup-2015.html +++ b/blog/2015/02/18/react-conf-roundup-2015.html @@ -64,7 +64,7 @@ @@ -333,7 +333,7 @@

Reactions #

The conference is over, but the conversation has just begun.

-

Mihai Parparita detailed his efforts to hack his way to a React.js Conf ticket; James Long blogged about his first encounter with React Native; Eric Florenzano talked about how he perceives the impact of Relay, GraphQL, and React Native on software development; Margaret Staples blogged about her experience of being on-campus at Facebook HQ; Jeff Barczewski tied his experience of attending the conference up with a bow in this blog post filled with photos, videos, and links; Kevin Old left us with his takeaways; Paul Wittmann found React Native freshly on his radar; and finally, undeterred by not being able to attend the conference in person, Justin Ball summarized it from afar.

+

Mihai Parparita detailed his efforts to hack his way to a React.js Conf ticket; James Long blogged about his first encounter with React Native; Eric Florenzano talked about how he perceives the impact of Relay, GraphQL, and React Native on software development; Margaret Staples blogged about her experience of being on-campus at Facebook HQ; Jeff Barczewski tied his experience of attending the conference up with a bow in this blog post filled with photos, videos, and links; Kevin Old left us with his takeaways; Paul Wittmann found React Native freshly on his radar; and finally, undeterred by not being able to attend the conference in person, Justin Ball summarized it from afar.

And, in case you missed a session, you can borrow Michael Chan’s drawings, Mihai Parparita’s summary, or Shaohua Zhou’s day 1 / day 2 notes.

@@ -435,7 +435,7 @@ Facebook Open Source diff --git a/blog/2015/02/20/introducing-relay-and-graphql.html b/blog/2015/02/20/introducing-relay-and-graphql.html index d028fad4ec..fcac6d5294 100644 --- a/blog/2015/02/20/introducing-relay-and-graphql.html +++ b/blog/2015/02/20/introducing-relay-and-graphql.html @@ -12,7 +12,7 @@ - Data fetching for React applications #"> + @@ -63,7 +63,7 @@ @@ -222,7 +222,7 @@ Facebook Open Source diff --git a/blog/2015/02/24/react-v0.13-rc1.html b/blog/2015/02/24/react-v0.13-rc1.html index 94728514cd..e0b83da06f 100644 --- a/blog/2015/02/24/react-v0.13-rc1.html +++ b/blog/2015/02/24/react-v0.13-rc1.html @@ -64,7 +64,7 @@ @@ -239,7 +239,7 @@ Minified build for production: diff --git a/blog/2015/02/24/streamlining-react-elements.html b/blog/2015/02/24/streamlining-react-elements.html index 87279b707e..c4a29ca7f5 100644 --- a/blog/2015/02/24/streamlining-react-elements.html +++ b/blog/2015/02/24/streamlining-react-elements.html @@ -64,7 +64,7 @@ @@ -322,7 +322,7 @@ Facebook Open Source diff --git a/blog/2015/03/03/react-v0.13-rc2.html b/blog/2015/03/03/react-v0.13-rc2.html index beb3ecaf89..d9afff26b0 100644 --- a/blog/2015/03/03/react-v0.13-rc2.html +++ b/blog/2015/03/03/react-v0.13-rc2.html @@ -64,7 +64,7 @@ @@ -223,7 +223,7 @@ Minified build for production: diff --git a/blog/2015/03/04/community-roundup-25.html b/blog/2015/03/04/community-roundup-25.html index 4a3f143f98..4c7f1d48cc 100644 --- a/blog/2015/03/04/community-roundup-25.html +++ b/blog/2015/03/04/community-roundup-25.html @@ -12,7 +12,7 @@ - React 101 #"> + @@ -63,7 +63,7 @@ @@ -222,7 +222,7 @@ Facebook Open Source diff --git a/blog/2015/03/10/react-v0.13.html b/blog/2015/03/10/react-v0.13.html index 31cb130995..e069bf82b6 100644 --- a/blog/2015/03/10/react-v0.13.html +++ b/blog/2015/03/10/react-v0.13.html @@ -64,7 +64,7 @@ @@ -253,7 +253,7 @@ Minified build for production: diff --git a/blog/2015/03/16/react-v0.13.1.html b/blog/2015/03/16/react-v0.13.1.html index 04a69838b0..d4ec7f7565 100644 --- a/blog/2015/03/16/react-v0.13.1.html +++ b/blog/2015/03/16/react-v0.13.1.html @@ -64,7 +64,7 @@ @@ -210,7 +210,7 @@ Minified build for production: diff --git a/blog/2015/03/19/building-the-facebook-news-feed-with-relay.html b/blog/2015/03/19/building-the-facebook-news-feed-with-relay.html index 670dbc5fa4..194bcc5e10 100644 --- a/blog/2015/03/19/building-the-facebook-news-feed-with-relay.html +++ b/blog/2015/03/19/building-the-facebook-news-feed-with-relay.html @@ -12,7 +12,7 @@ - our introductory blog post or watching the conference talk. + @@ -64,7 +64,7 @@ @@ -357,7 +357,7 @@ Facebook Open Source diff --git a/blog/2015/03/26/introducing-react-native.html b/blog/2015/03/26/introducing-react-native.html index ded4149369..885f6755c3 100644 --- a/blog/2015/03/26/introducing-react-native.html +++ b/blog/2015/03/26/introducing-react-native.html @@ -64,7 +64,7 @@ @@ -188,7 +188,7 @@ Facebook Open Source diff --git a/blog/2015/03/30/community-roundup-26.html b/blog/2015/03/30/community-roundup-26.html index 72120a0cb7..b3e5817a68 100644 --- a/blog/2015/03/30/community-roundup-26.html +++ b/blog/2015/03/30/community-roundup-26.html @@ -64,7 +64,7 @@ @@ -230,7 +230,7 @@ Facebook Open Source diff --git a/blog/2015/04/17/react-native-v0.4.html b/blog/2015/04/17/react-native-v0.4.html index 23ebec0d54..b51e571584 100644 --- a/blog/2015/04/17/react-native-v0.4.html +++ b/blog/2015/04/17/react-native-v0.4.html @@ -12,7 +12,7 @@ - 35 plugins and 1 app in the app store! We were expecting some buzz around the project but this is way beyond anything we imagined. Thank you! + @@ -64,7 +64,7 @@ @@ -192,7 +192,7 @@ Facebook Open Source diff --git a/blog/2015/04/18/react-v0.13.2.html b/blog/2015/04/18/react-v0.13.2.html index c8ffdda979..75a9bef9b0 100644 --- a/blog/2015/04/18/react-v0.13.2.html +++ b/blog/2015/04/18/react-v0.13.2.html @@ -12,7 +12,7 @@ - React Native team shipped v0.4. Those of us working on the web team just a few feet away couldn't just be shown up like that so we're shipping v0.13.2 today as well! This is a bug fix release to address a few things while we continue to work towards v0.14. + @@ -64,7 +64,7 @@ @@ -219,7 +219,7 @@ Minified build for production: diff --git a/blog/2015/05/01/graphql-introduction.html b/blog/2015/05/01/graphql-introduction.html index 1dead386b9..7e4bbdc826 100644 --- a/blog/2015/05/01/graphql-introduction.html +++ b/blog/2015/05/01/graphql-introduction.html @@ -12,7 +12,7 @@ - Relay. + @@ -64,7 +64,7 @@ @@ -261,7 +261,7 @@ Facebook Open Source diff --git a/blog/2015/05/08/react-v0.13.3.html b/blog/2015/05/08/react-v0.13.3.html index 460b0738a7..021855b8a4 100644 --- a/blog/2015/05/08/react-v0.13.3.html +++ b/blog/2015/05/08/react-v0.13.3.html @@ -12,7 +12,7 @@ - @@ -64,7 +64,7 @@ @@ -208,7 +208,7 @@ Minified build for production: diff --git a/blog/2015/05/22/react-native-release-process.html b/blog/2015/05/22/react-native-release-process.html index 17c5055cba..14e62cd2b7 100644 --- a/blog/2015/05/22/react-native-release-process.html +++ b/blog/2015/05/22/react-native-release-process.html @@ -12,7 +12,7 @@ - @@ -64,7 +64,7 @@ @@ -194,7 +194,7 @@ Facebook Open Source diff --git a/blog/2015/06/12/deprecating-jstransform-and-react-tools.html b/blog/2015/06/12/deprecating-jstransform-and-react-tools.html index da8007de62..7b7a6b957f 100644 --- a/blog/2015/06/12/deprecating-jstransform-and-react-tools.html +++ b/blog/2015/06/12/deprecating-jstransform-and-react-tools.html @@ -64,7 +64,7 @@ @@ -192,7 +192,7 @@ Facebook Open Source diff --git a/blog/2015/07/03/react-v0.14-beta-1.html b/blog/2015/07/03/react-v0.14-beta-1.html index 3df3f0d852..464b3af313 100644 --- a/blog/2015/07/03/react-v0.14-beta-1.html +++ b/blog/2015/07/03/react-v0.14-beta-1.html @@ -12,7 +12,7 @@ - ReactEurope in the beautiful (and very warm) city of Paris, the second React conference that's been held to date. At our last conference, we released the first beta of React 0.13, and we figured we'd do the same today with our first beta of React 0.14, giving you something to play with if you're not at the conference or you're looking for something to do on the way home. + @@ -64,7 +64,7 @@ @@ -235,7 +235,7 @@ Facebook Open Source diff --git a/blog/2015/08/03/new-react-devtools-beta.html b/blog/2015/08/03/new-react-devtools-beta.html index d473096874..2b5449f599 100644 --- a/blog/2015/08/03/new-react-devtools-beta.html +++ b/blog/2015/08/03/new-react-devtools-beta.html @@ -65,7 +65,7 @@ out! @@ -251,7 +251,7 @@ for more info.

Facebook Open Source diff --git a/blog/2015/08/11/relay-technical-preview.html b/blog/2015/08/11/relay-technical-preview.html index 191c71a64a..276e681115 100644 --- a/blog/2015/08/11/relay-technical-preview.html +++ b/blog/2015/08/11/relay-technical-preview.html @@ -12,7 +12,7 @@ - Relay #"> + @@ -63,7 +63,7 @@ @@ -199,7 +199,7 @@ Facebook Open Source diff --git a/blog/2015/08/13/reacteurope-roundup.html b/blog/2015/08/13/reacteurope-roundup.html index 6cbd0d97bd..45f288fdb3 100644 --- a/blog/2015/08/13/reacteurope-roundup.html +++ b/blog/2015/08/13/reacteurope-roundup.html @@ -64,7 +64,7 @@ @@ -233,7 +233,7 @@ Facebook Open Source diff --git a/blog/2015/09/02/new-react-developer-tools.html b/blog/2015/09/02/new-react-developer-tools.html index ce91da2cda..dcf6eac9e3 100644 --- a/blog/2015/09/02/new-react-developer-tools.html +++ b/blog/2015/09/02/new-react-developer-tools.html @@ -12,7 +12,7 @@ - posted a beta of the new React developer tools. Today, we're releasing the first stable version of the new devtools. We're calling it version 0.14, but it's a full rewrite so we think of it more like a 2.0 release. + @@ -64,7 +64,7 @@ @@ -196,7 +196,7 @@ Facebook Open Source diff --git a/blog/2015/09/10/react-v0.14-rc1.html b/blog/2015/09/10/react-v0.14-rc1.html index 2adfd77c1d..e374013401 100644 --- a/blog/2015/09/10/react-v0.14-rc1.html +++ b/blog/2015/09/10/react-v0.14-rc1.html @@ -12,7 +12,7 @@ - sneak peek in July at the upcoming changes but we’ve now stabilized the release more and we’d love for you to try it out before we release the final version. + @@ -64,7 +64,7 @@ @@ -331,7 +331,7 @@ Minified build for production: diff --git a/blog/2015/09/14/community-roundup-27.html b/blog/2015/09/14/community-roundup-27.html index de3765b065..bc1dc1eaf2 100644 --- a/blog/2015/09/14/community-roundup-27.html +++ b/blog/2015/09/14/community-roundup-27.html @@ -12,7 +12,7 @@ - open-source release of the Relay technical preview, the community has been abuzz with activity. We are honored to have been able to enjoy a steady stream of ideas and contributions from such a talented group of individuals. Let's take a look at some of the things we've achieved, together! + @@ -64,7 +64,7 @@ @@ -239,7 +239,7 @@ Facebook Open Source diff --git a/blog/2015/10/01/react-render-and-top-level-api.html b/blog/2015/10/01/react-render-and-top-level-api.html index 724c8d0faa..af784c7f05 100644 --- a/blog/2015/10/01/react-render-and-top-level-api.html +++ b/blog/2015/10/01/react-render-and-top-level-api.html @@ -64,7 +64,7 @@ @@ -287,7 +287,7 @@ Facebook Open Source diff --git a/blog/2015/10/07/react-v0.14.html b/blog/2015/10/07/react-v0.14.html index 874100c03b..946d961a6c 100644 --- a/blog/2015/10/07/react-v0.14.html +++ b/blog/2015/10/07/react-v0.14.html @@ -64,7 +64,7 @@ @@ -356,7 +356,7 @@ Minified build for production: h Facebook Open Source diff --git a/blog/2015/10/19/reactiflux-is-moving-to-discord.html b/blog/2015/10/19/reactiflux-is-moving-to-discord.html index 7541415d22..11ab7ff771 100644 --- a/blog/2015/10/19/reactiflux-is-moving-to-discord.html +++ b/blog/2015/10/19/reactiflux-is-moving-to-discord.html @@ -12,7 +12,7 @@ - http://join.reactiflux.com + @@ -64,7 +64,7 @@ @@ -228,7 +228,7 @@ Facebook Open Source diff --git a/blog/2015/10/28/react-v0.14.1.html b/blog/2015/10/28/react-v0.14.1.html index 5ee70c7616..fc84565d1c 100644 --- a/blog/2015/10/28/react-v0.14.1.html +++ b/blog/2015/10/28/react-v0.14.1.html @@ -64,7 +64,7 @@ @@ -214,7 +214,7 @@ Minified build for production: h Facebook Open Source diff --git a/blog/2015/11/02/react-v0.14.2.html b/blog/2015/11/02/react-v0.14.2.html index a43ee4d213..8cc5392683 100644 --- a/blog/2015/11/02/react-v0.14.2.html +++ b/blog/2015/11/02/react-v0.14.2.html @@ -12,7 +12,7 @@ - @@ -64,7 +64,7 @@ @@ -202,7 +202,7 @@ Minified build for production: h Facebook Open Source diff --git a/blog/2015/11/18/react-v0.14.3.html b/blog/2015/11/18/react-v0.14.3.html index 4a501e0dbd..541a4f94e0 100644 --- a/blog/2015/11/18/react-v0.14.3.html +++ b/blog/2015/11/18/react-v0.14.3.html @@ -12,7 +12,7 @@ - @@ -64,7 +64,7 @@ @@ -214,7 +214,7 @@ Minified build for production: diff --git a/blog/2015/12/04/react-js-conf-2016-diversity-scholarship.html b/blog/2015/12/04/react-js-conf-2016-diversity-scholarship.html index a7d6e7077a..8008077716 100644 --- a/blog/2015/12/04/react-js-conf-2016-diversity-scholarship.html +++ b/blog/2015/12/04/react-js-conf-2016-diversity-scholarship.html @@ -64,7 +64,7 @@ @@ -214,7 +214,7 @@ Facebook Open Source diff --git a/blog/2015/12/16/ismounted-antipattern.html b/blog/2015/12/16/ismounted-antipattern.html index 59ef4d3c12..8513a78366 100644 --- a/blog/2015/12/16/ismounted-antipattern.html +++ b/blog/2015/12/16/ismounted-antipattern.html @@ -64,7 +64,7 @@ @@ -239,7 +239,7 @@ Facebook Open Source diff --git a/blog/2015/12/18/react-components-elements-and-instances.html b/blog/2015/12/18/react-components-elements-and-instances.html index 934d29edbd..6e39ebc3fd 100644 --- a/blog/2015/12/18/react-components-elements-and-instances.html +++ b/blog/2015/12/18/react-components-elements-and-instances.html @@ -12,7 +12,7 @@ - @@ -64,7 +64,7 @@ @@ -509,7 +509,7 @@ Facebook Open Source diff --git a/blog/2015/12/29/react-v0.14.4.html b/blog/2015/12/29/react-v0.14.4.html index 318d12a271..a1fb2e166b 100644 --- a/blog/2015/12/29/react-v0.14.4.html +++ b/blog/2015/12/29/react-v0.14.4.html @@ -64,7 +64,7 @@ @@ -210,7 +210,7 @@ Minified build for production: diff --git a/blog/2016/01/08/A-implies-B-does-not-imply-B-implies-A.html b/blog/2016/01/08/A-implies-B-does-not-imply-B-implies-A.html index abdc303cb0..47a1664af1 100644 --- a/blog/2016/01/08/A-implies-B-does-not-imply-B-implies-A.html +++ b/blog/2016/01/08/A-implies-B-does-not-imply-B-implies-A.html @@ -12,7 +12,7 @@ - @@ -64,7 +64,7 @@ @@ -225,7 +225,7 @@ Facebook Open Source diff --git a/blog/2016/01/12/discontinuing-ie8-support.html b/blog/2016/01/12/discontinuing-ie8-support.html index 6002e1fe63..3072291b3e 100644 --- a/blog/2016/01/12/discontinuing-ie8-support.html +++ b/blog/2016/01/12/discontinuing-ie8-support.html @@ -64,7 +64,7 @@ @@ -180,7 +180,7 @@ Facebook Open Source diff --git a/blog/2016/02/19/new-versioning-scheme.html b/blog/2016/02/19/new-versioning-scheme.html index 3a7966a693..ee86e06936 100644 --- a/blog/2016/02/19/new-versioning-scheme.html +++ b/blog/2016/02/19/new-versioning-scheme.html @@ -12,7 +12,7 @@ - @@ -64,7 +64,7 @@ @@ -220,7 +220,7 @@ Facebook Open Source diff --git a/blog/2016/03/07/react-v15-rc1.html b/blog/2016/03/07/react-v15-rc1.html index e659d10af3..304a8dcf9d 100644 --- a/blog/2016/03/07/react-v15-rc1.html +++ b/blog/2016/03/07/react-v15-rc1.html @@ -12,7 +12,7 @@ - ████████████████████████████████████. WOW! + @@ -64,7 +64,7 @@ @@ -252,7 +252,7 @@ Minified build for production: diff --git a/blog/2016/03/16/react-v15-rc2.html b/blog/2016/03/16/react-v15-rc2.html index 8cd91b7e23..d36a48f015 100644 --- a/blog/2016/03/16/react-v15-rc2.html +++ b/blog/2016/03/16/react-v15-rc2.html @@ -64,7 +64,7 @@ @@ -204,7 +204,7 @@ Minified build for production: diff --git a/blog/2016/03/29/react-v0.14.8.html b/blog/2016/03/29/react-v0.14.8.html index a10c64916d..a77e371985 100644 --- a/blog/2016/03/29/react-v0.14.8.html +++ b/blog/2016/03/29/react-v0.14.8.html @@ -64,7 +64,7 @@ @@ -203,7 +203,7 @@ Minified build for production: diff --git a/blog/2016/04/07/react-v15.html b/blog/2016/04/07/react-v15.html index b83a15e75a..1090aaa4fb 100644 --- a/blog/2016/04/07/react-v15.html +++ b/blog/2016/04/07/react-v15.html @@ -12,7 +12,7 @@ - issue tracker. Over the last few weeks we fixed those issues, and now, after two release candidates, we are excited to finally release the stable version of React 15. + @@ -64,7 +64,7 @@ @@ -371,7 +371,7 @@ Minified build for production: h Facebook Open Source diff --git a/blog/2016/04/08/react-v15.0.1.html b/blog/2016/04/08/react-v15.0.1.html index f12332082c..1cde68a5ff 100644 --- a/blog/2016/04/08/react-v15.0.1.html +++ b/blog/2016/04/08/react-v15.0.1.html @@ -64,7 +64,7 @@ @@ -206,7 +206,7 @@ Minified build for production: h Facebook Open Source diff --git a/blog/2016/07/11/introducing-reacts-error-code-system.html b/blog/2016/07/11/introducing-reacts-error-code-system.html index 8f2b3b2ae7..15d306d9be 100644 --- a/blog/2016/07/11/introducing-reacts-error-code-system.html +++ b/blog/2016/07/11/introducing-reacts-error-code-system.html @@ -64,7 +64,7 @@ @@ -192,7 +192,7 @@ Facebook Open Source diff --git a/blog/2016/07/13/mixins-considered-harmful.html b/blog/2016/07/13/mixins-considered-harmful.html index 7a9dca2098..6a724543ff 100644 --- a/blog/2016/07/13/mixins-considered-harmful.html +++ b/blog/2016/07/13/mixins-considered-harmful.html @@ -64,7 +64,7 @@ @@ -702,7 +702,7 @@ Facebook Open Source diff --git a/blog/2016/07/22/create-apps-with-no-configuration.html b/blog/2016/07/22/create-apps-with-no-configuration.html index 334b2ebc09..833e35ce54 100644 --- a/blog/2016/07/22/create-apps-with-no-configuration.html +++ b/blog/2016/07/22/create-apps-with-no-configuration.html @@ -12,7 +12,7 @@ - Create React App is a new officially supported way to create single-page React applications. It offers a modern build setup with no configuration. + @@ -64,7 +64,7 @@ @@ -304,7 +304,7 @@ The console output is tuned to be minimal to help you focus on the problems:

Facebook Open Source diff --git a/blog/2016/08/05/relay-state-of-the-state.html b/blog/2016/08/05/relay-state-of-the-state.html index cbbf9528f3..c2f2ee468a 100644 --- a/blog/2016/08/05/relay-state-of-the-state.html +++ b/blog/2016/08/05/relay-state-of-the-state.html @@ -64,7 +64,7 @@ @@ -247,7 +247,7 @@ Facebook Open Source diff --git a/blog/2016/09/28/our-first-50000-stars.html b/blog/2016/09/28/our-first-50000-stars.html index 9b0ec102f4..9af33ea2da 100644 --- a/blog/2016/09/28/our-first-50000-stars.html +++ b/blog/2016/09/28/our-first-50000-stars.html @@ -64,7 +64,7 @@ @@ -307,7 +307,7 @@ I think we should just treat arrays of elements as a frag. This is useful for co

React website mock

-

In its earliest days, React benefitted tremendously from feedback, ideas, and technical contributions of early adopters and collaborators all over the company. While it might look like an overnight success in hindsight, the story of React is actually a great example of how new ideas often need to go through several rounds of refinement, iteration, and course correction over a long period of time before reaching their full potential.

+

In its earliest days, React benefited tremendously from feedback, ideas, and technical contributions of early adopters and collaborators all over the company. While it might look like an overnight success in hindsight, the story of React is actually a great example of how new ideas often need to go through several rounds of refinement, iteration, and course correction over a long period of time before reaching their full potential.

React's approach to building user interfaces with functional programming principles has changed the way we do things in just a few short years. It goes without saying, but React would be nothing without the amazing open source community that's built up around it!

@@ -389,7 +389,7 @@ I think we should just treat arrays of elements as a frag. This is useful for co Facebook Open Source diff --git a/blog/2016/11/16/react-v15.4.0.html b/blog/2016/11/16/react-v15.4.0.html index d866869321..59ae3a20f1 100644 --- a/blog/2016/11/16/react-v15.4.0.html +++ b/blog/2016/11/16/react-v15.4.0.html @@ -64,7 +64,7 @@ @@ -327,7 +327,7 @@ Minified build for production: diff --git a/blog/all.html b/blog/all.html index affc285595..f467e1e82a 100644 --- a/blog/all.html +++ b/blog/all.html @@ -63,7 +63,7 @@ @@ -885,7 +885,7 @@ Facebook Open Source diff --git a/blog/index.html b/blog/index.html index 5548a405bd..035e395dd3 100644 --- a/blog/index.html +++ b/blog/index.html @@ -63,7 +63,7 @@ @@ -519,7 +519,7 @@ I think we should just treat arrays of elements as a frag. This is useful for co

React website mock

-

In its earliest days, React benefitted tremendously from feedback, ideas, and technical contributions of early adopters and collaborators all over the company. While it might look like an overnight success in hindsight, the story of React is actually a great example of how new ideas often need to go through several rounds of refinement, iteration, and course correction over a long period of time before reaching their full potential.

+

In its earliest days, React benefited tremendously from feedback, ideas, and technical contributions of early adopters and collaborators all over the company. While it might look like an overnight success in hindsight, the story of React is actually a great example of how new ideas often need to go through several rounds of refinement, iteration, and course correction over a long period of time before reaching their full potential.

React's approach to building user interfaces with functional programming principles has changed the way we do things in just a few short years. It goes without saying, but React would be nothing without the amazing open source community that's built up around it!

@@ -1398,7 +1398,7 @@ The console output is tuned to be minimal to help you focus on the problems:

Facebook Open Source diff --git a/blog/page10/index.html b/blog/page10/index.html index 2bb98b6480..3089823559 100644 --- a/blog/page10/index.html +++ b/blog/page10/index.html @@ -63,7 +63,7 @@ @@ -618,7 +618,7 @@

Reactions #

The conference is over, but the conversation has just begun.

-

Mihai Parparita detailed his efforts to hack his way to a React.js Conf ticket; James Long blogged about his first encounter with React Native; Eric Florenzano talked about how he perceives the impact of Relay, GraphQL, and React Native on software development; Margaret Staples blogged about her experience of being on-campus at Facebook HQ; Jeff Barczewski tied his experience of attending the conference up with a bow in this blog post filled with photos, videos, and links; Kevin Old left us with his takeaways; Paul Wittmann found React Native freshly on his radar; and finally, undeterred by not being able to attend the conference in person, Justin Ball summarized it from afar.

+

Mihai Parparita detailed his efforts to hack his way to a React.js Conf ticket; James Long blogged about his first encounter with React Native; Eric Florenzano talked about how he perceives the impact of Relay, GraphQL, and React Native on software development; Margaret Staples blogged about her experience of being on-campus at Facebook HQ; Jeff Barczewski tied his experience of attending the conference up with a bow in this blog post filled with photos, videos, and links; Kevin Old left us with his takeaways; Paul Wittmann found React Native freshly on his radar; and finally, undeterred by not being able to attend the conference in person, Justin Ball summarized it from afar.

And, in case you missed a session, you can borrow Michael Chan’s drawings, Mihai Parparita’s summary, or Shaohua Zhou’s day 1 / day 2 notes.

@@ -922,7 +922,7 @@ Facebook will make determinations on scholarship recipients in its sole discreti Facebook Open Source diff --git a/blog/page11/index.html b/blog/page11/index.html index 1bf2ea1246..64c0a9230b 100644 --- a/blog/page11/index.html +++ b/blog/page11/index.html @@ -63,7 +63,7 @@ @@ -568,7 +568,7 @@ Minified build for production: diff --git a/blog/page12/index.html b/blog/page12/index.html index 742586bf2d..8763e14be8 100644 --- a/blog/page12/index.html +++ b/blog/page12/index.html @@ -63,7 +63,7 @@ @@ -976,7 +976,7 @@ Minified build for production: diff --git a/blog/page13/index.html b/blog/page13/index.html index 2a9898b24f..eec0765ac8 100644 --- a/blog/page13/index.html +++ b/blog/page13/index.html @@ -63,7 +63,7 @@ @@ -577,7 +577,7 @@ This is not the intended way to use React but can be useful as last resort if yo Facebook Open Source diff --git a/blog/page14/index.html b/blog/page14/index.html index 852be30662..b3026f0d89 100644 --- a/blog/page14/index.html +++ b/blog/page14/index.html @@ -63,7 +63,7 @@ @@ -664,7 +664,7 @@ Minified build for production: diff --git a/blog/page15/index.html b/blog/page15/index.html index b63a85da33..f49580b930 100644 --- a/blog/page15/index.html +++ b/blog/page15/index.html @@ -63,7 +63,7 @@ @@ -514,7 +514,7 @@ Minified build for production: diff --git a/blog/page16/index.html b/blog/page16/index.html index 337b901a3a..0cad38c6c3 100644 --- a/blog/page16/index.html +++ b/blog/page16/index.html @@ -63,7 +63,7 @@ @@ -729,7 +729,7 @@ Minified build for production: diff --git a/blog/page17/index.html b/blog/page17/index.html index e1c31d9e86..e370463025 100644 --- a/blog/page17/index.html +++ b/blog/page17/index.html @@ -63,7 +63,7 @@ @@ -647,7 +647,7 @@ componentDidUpdate: function() { Facebook Open Source diff --git a/blog/page18/index.html b/blog/page18/index.html index 1281382948..782c51ec63 100644 --- a/blog/page18/index.html +++ b/blog/page18/index.html @@ -63,7 +63,7 @@ @@ -549,7 +549,7 @@ Is this some sort of template language? Specifically no. This might have been th Facebook Open Source diff --git a/blog/page19/index.html b/blog/page19/index.html index 2aff71c284..567007fb8e 100644 --- a/blog/page19/index.html +++ b/blog/page19/index.html @@ -63,7 +63,7 @@ @@ -585,7 +585,7 @@ Facebook Open Source diff --git a/blog/page2/index.html b/blog/page2/index.html index 797caded8a..fa04bd41ba 100644 --- a/blog/page2/index.html +++ b/blog/page2/index.html @@ -63,7 +63,7 @@ @@ -609,7 +609,7 @@ Minified build for production: diff --git a/blog/page20/index.html b/blog/page20/index.html index 9da1810f14..50e2e813b6 100644 --- a/blog/page20/index.html +++ b/blog/page20/index.html @@ -63,7 +63,7 @@ @@ -536,7 +536,7 @@ If you were using React without JSX previously, your code should still work. diff --git a/blog/page21/index.html b/blog/page21/index.html index 500e4d2bd2..0b5c29006e 100644 --- a/blog/page21/index.html +++ b/blog/page21/index.html @@ -63,7 +63,7 @@ @@ -530,7 +530,7 @@ Facebook Open Source diff --git a/blog/page22/index.html b/blog/page22/index.html index 4c8a6ecdc2..08ca259a2f 100644 --- a/blog/page22/index.html +++ b/blog/page22/index.html @@ -63,7 +63,7 @@ @@ -467,7 +467,7 @@ but if you are interested in the nuts and bolts Facebook Open Source diff --git a/blog/page3/index.html b/blog/page3/index.html index 16532fcaf6..d1eeb0bcd6 100644 --- a/blog/page3/index.html +++ b/blog/page3/index.html @@ -63,7 +63,7 @@ @@ -520,7 +520,7 @@ Minified build for production: diff --git a/blog/page4/index.html b/blog/page4/index.html index 4dcb0ad470..1cb63a3c47 100644 --- a/blog/page4/index.html +++ b/blog/page4/index.html @@ -63,7 +63,7 @@ @@ -811,7 +811,7 @@ Minified build for production: h Facebook Open Source diff --git a/blog/page5/index.html b/blog/page5/index.html index d215750ca0..15ec0f752b 100644 --- a/blog/page5/index.html +++ b/blog/page5/index.html @@ -63,7 +63,7 @@ @@ -757,7 +757,7 @@ Minified build for production: h Facebook Open Source diff --git a/blog/page6/index.html b/blog/page6/index.html index 112b27afea..8595aad22e 100644 --- a/blog/page6/index.html +++ b/blog/page6/index.html @@ -63,7 +63,7 @@ @@ -643,7 +643,7 @@ for more info.

Facebook Open Source diff --git a/blog/page7/index.html b/blog/page7/index.html index f1146cc40f..38dfc4a220 100644 --- a/blog/page7/index.html +++ b/blog/page7/index.html @@ -63,7 +63,7 @@ @@ -523,7 +523,7 @@ Minified build for production: diff --git a/blog/page8/index.html b/blog/page8/index.html index 49fd7de4b4..15acee7722 100644 --- a/blog/page8/index.html +++ b/blog/page8/index.html @@ -63,7 +63,7 @@ @@ -619,7 +619,7 @@ Minified build for production: diff --git a/blog/page9/index.html b/blog/page9/index.html index 6b1a8e84e4..f0b308473e 100644 --- a/blog/page9/index.html +++ b/blog/page9/index.html @@ -63,7 +63,7 @@ @@ -581,7 +581,7 @@ Minified build for production: diff --git a/community/conferences.html b/community/conferences.html index 718550d954..3c0e5862df 100644 --- a/community/conferences.html +++ b/community/conferences.html @@ -63,7 +63,7 @@ @@ -84,6 +84,10 @@

January 20-21 in Dornbirn, Austria

Website

+

React Conf 2017 #

+

March 13-14 in Santa Clara, CA

+ +

Website

ReactEurope 2017 #

May 18th & 19th in Paris, France

@@ -232,7 +236,7 @@ Facebook Open Source diff --git a/community/support.html b/community/support.html index 56194c42e5..26b6e55804 100644 --- a/community/support.html +++ b/community/support.html @@ -63,7 +63,7 @@ @@ -181,7 +181,7 @@ Facebook Open Source diff --git a/community/videos.html b/community/videos.html index f4bbdbfb2c..2da0ed5a4e 100644 --- a/community/videos.html +++ b/community/videos.html @@ -63,7 +63,7 @@ @@ -128,10 +128,6 @@

Facebook engineers Bill Fisher and Jing Chen talk about Flux and React at Forward JS 2014, and how using an application architecture with a unidirectional data flow cleans up a lot of their code.

-

Server-Side Rendering of Isomorphic Apps at SoundCloud #

-

Walk-through by Andres Suarez on how SoundCloud is using React and Flux for server-side rendering.

- -

Slides and sample code

@@ -306,7 +302,7 @@ Facebook Open Source diff --git a/contributing/codebase-overview.html b/contributing/codebase-overview.html index 6484213137..a4d15ada74 100644 --- a/contributing/codebase-overview.html +++ b/contributing/codebase-overview.html @@ -63,7 +63,7 @@ @@ -248,7 +248,7 @@ You can run npm run flow locally to check your code with Flow.

The Mixin in this code has no relation to React mixins feature. It is just a way of grouping a few methods under an object. Those methods may later get attached to some other class. We use this pattern in a few places although we try to avoid it in the new code.

-

Equivalent code in ES6 would like this:

+

Equivalent code in ES6 would look like this:

class ReactDOMComponent {
   constructor(element) {
     this._currentElement = element;
@@ -341,7 +341,7 @@ You can run npm run flow locally to check your code with Flow.

The only other officially supported renderer is react-art. To avoid accidentally breaking it as we make changes to React, we checked it in as src/renderers/art and run its test suite. Nevertheless, its GitHub repository still acts as the source of truth.

-

While it is technically possible to create custom React renderer, this is currently not officially supported. There is no stable public contract for custom renderers yet which is another reason why we keep them all in a single place.

+

While it is technically possible to create custom React renderers, this is currently not officially supported. There is no stable public contract for custom renderers yet which is another reason why we keep them all in a single place.

Note:

@@ -367,7 +367,7 @@ You can run npm run flow locally to check your code with Flow.

Composite Components #

User-defined ("composite") components should behave the same way with all renderers. This is why the stack reconciler provides a shared implementation in ReactCompositeComponent. It is always the same regardless of the renderer.

-

Composite components also implement mounting, updating, and unmounting. However, unlike host components, ReactCompositeComponent needs to behave differently depending on user's code. This is why it calls methods, such as render() and componentDidMount(), on the user-supplied class.

+

Composite components also implement mounting, updating, and unmounting. However, unlike host components, ReactCompositeComponent needs to behave differently depending on the user's code. This is why it calls methods, such as render() and componentDidMount(), on the user-supplied class.

During an update, ReactCompositeComponent checks whether the render() output has a different type or key than the last time. If neither type nor key has changed, it delegates the update to the existing child internal instance. Otherwise, it unmounts the old child instance and mounts a new one. This is described in the reconciliation algorithm.

Recursion #

@@ -545,6 +545,11 @@ You can run npm run flow locally to check your code with Flow.

+
  • + Higher-Order Components + +
  • +
    @@ -699,7 +704,7 @@ You can run npm run flow locally to check your code with Flow.

    Facebook Open Source diff --git a/contributing/design-principles.html b/contributing/design-principles.html index 4b834f8089..abe6ab0dff 100644 --- a/contributing/design-principles.html +++ b/contributing/design-principles.html @@ -63,7 +63,7 @@ @@ -342,6 +342,11 @@ +
  • + Higher-Order Components + +
  • + @@ -496,7 +501,7 @@ Facebook Open Source diff --git a/contributing/how-to-contribute.html b/contributing/how-to-contribute.html index 6c1620c591..6dd59d063a 100644 --- a/contributing/how-to-contribute.html +++ b/contributing/how-to-contribute.html @@ -63,7 +63,7 @@ @@ -103,7 +103,7 @@

    There is also an active community of React users on the Discord chat platform in case you need help with React.

    Proposing a Change #

    -

    If you intend to change to the public API, or make any non-trivial changes to the implementation, we recommend filing an issue. This lets us reach an agreement on your proposal before you put significant effort into it.

    +

    If you intend to change the public API, or make any non-trivial changes to the implementation, we recommend filing an issue. This lets us reach an agreement on your proposal before you put significant effort into it.

    If you're only fixing a bug, it's fine to submit a pull request right away but we still recommend to file an issue detailing what you're fixing. This is helpful in case we don't accept that specific fix but want to keep track of the issue.

    Your First Pull Request #

    @@ -331,6 +331,11 @@ You can check the status of your code styling by simply running npm run li +
  • + Higher-Order Components + +
  • + @@ -485,7 +490,7 @@ You can check the status of your code styling by simply running npm run li Facebook Open Source diff --git a/contributing/implementation-notes.html b/contributing/implementation-notes.html index 94353989b0..a9e53f528d 100644 --- a/contributing/implementation-notes.html +++ b/contributing/implementation-notes.html @@ -63,7 +63,7 @@ @@ -995,6 +995,11 @@ +
  • + Higher-Order Components + +
  • + @@ -1149,7 +1154,7 @@ Facebook Open Source diff --git a/docs/addons.html b/docs/addons.html index 792ebf59a7..1d0128eeed 100644 --- a/docs/addons.html +++ b/docs/addons.html @@ -63,7 +63,7 @@ @@ -247,6 +247,11 @@ +
  • + Higher-Order Components + +
  • + @@ -401,7 +406,7 @@ Facebook Open Source diff --git a/docs/animation.html b/docs/animation.html index 30a3c048c6..9fc92464f1 100644 --- a/docs/animation.html +++ b/docs/animation.html @@ -63,7 +63,7 @@ @@ -78,7 +78,7 @@
    -

    The ReactTransitionGroup add-on component is a low-level API for animation, and ReactCSSTransitionGroup is an add-on component for easily implementing basic CSS animations and transitions.

    +

    The ReactTransitionGroup add-on component is a low-level API for animation, and ReactCSSTransitionGroup is an add-on component for easily implementing basic CSS animations and transitions.

    High-level API: ReactCSSTransitionGroup #

    ReactCSSTransitionGroup is a high-level API based on ReactTransitionGroup and is an easy way to perform CSS transitions and animations when a React component enters or leaves the DOM. It's inspired by the excellent ng-animate library.

    @@ -473,6 +473,11 @@ +
  • + Higher-Order Components + +
  • + @@ -627,7 +632,7 @@ Facebook Open Source diff --git a/docs/components-and-props.html b/docs/components-and-props.html index 62310abddc..3848cb6f07 100644 --- a/docs/components-and-props.html +++ b/docs/components-and-props.html @@ -63,7 +63,7 @@ @@ -424,6 +424,11 @@ +
  • + Higher-Order Components + +
  • + @@ -578,7 +583,7 @@ Facebook Open Source diff --git a/docs/composition-vs-inheritance.html b/docs/composition-vs-inheritance.html index 319553e1fc..d4c53a9de0 100644 --- a/docs/composition-vs-inheritance.html +++ b/docs/composition-vs-inheritance.html @@ -63,7 +63,7 @@ @@ -360,6 +360,11 @@ +
  • + Higher-Order Components + +
  • + @@ -514,7 +519,7 @@ Facebook Open Source diff --git a/docs/conditional-rendering.html b/docs/conditional-rendering.html index f220fc063c..980d327769 100644 --- a/docs/conditional-rendering.html +++ b/docs/conditional-rendering.html @@ -63,7 +63,7 @@ @@ -106,7 +106,7 @@ document.getElementById('root') );
    -

    Try it out on CodePen.

    +

    Try it on CodePen.

    This example renders a different greeting depending on the value of isLoggedIn prop.

    Element Variables #

    @@ -172,7 +172,7 @@ document.getElementById('root') );
    -

    Try it out on CodePen.

    +

    Try it on CodePen.

    While declaring a variable and using an if statement is a fine way to conditionally render a component, sometimes you might want to use a shorter syntax. There are a few ways to inline conditions in JSX, explained below.

    Inline If with Logical && Operator #

    @@ -276,7 +276,9 @@ document.getElementById('root') );
    -

    Try it out on CodePen.

    +

    Try it on CodePen.

    + +

    Returning null from a component's render method does not affect the firing of the component's lifecycle methods. For instance, componentWillUpdate and componentDidUpdate will still be called.

    @@ -418,6 +420,11 @@ +
  • + Higher-Order Components + +
  • +
    @@ -572,7 +579,7 @@ Facebook Open Source diff --git a/docs/conferences-it-IT.html b/docs/conferences-it-IT.html index cf53488bb6..8546358919 100644 --- a/docs/conferences-it-IT.html +++ b/docs/conferences-it-IT.html @@ -63,7 +63,7 @@ @@ -180,7 +180,7 @@ Facebook Open Source diff --git a/docs/conferences-ko-KR.html b/docs/conferences-ko-KR.html index 2251729ab2..c2ef7ec9b2 100644 --- a/docs/conferences-ko-KR.html +++ b/docs/conferences-ko-KR.html @@ -63,7 +63,7 @@ @@ -180,7 +180,7 @@ Facebook Open Source diff --git a/docs/conferences-zh-CN.html b/docs/conferences-zh-CN.html index 0c8f80924e..8b06552742 100644 --- a/docs/conferences-zh-CN.html +++ b/docs/conferences-zh-CN.html @@ -63,7 +63,7 @@ @@ -188,7 +188,7 @@ Facebook Open Source diff --git a/docs/context.html b/docs/context.html index 13f6928a73..a23190c61f 100644 --- a/docs/context.html +++ b/docs/context.html @@ -63,7 +63,7 @@ @@ -385,6 +385,11 @@ You can do this directly in React with the powerful "context" API.

    +
  • + Higher-Order Components + +
  • + @@ -539,7 +544,7 @@ You can do this directly in React with the powerful "context" API.

    Facebook Open Source diff --git a/docs/create-fragment.html b/docs/create-fragment.html index 58e84932fc..03cbd36abd 100644 --- a/docs/create-fragment.html +++ b/docs/create-fragment.html @@ -63,7 +63,7 @@ @@ -263,6 +263,11 @@ +
  • + Higher-Order Components + +
  • + @@ -417,7 +422,7 @@ Facebook Open Source diff --git a/docs/dom-elements.html b/docs/dom-elements.html index 6d2c37e361..4990d5f8dd 100644 --- a/docs/dom-elements.html +++ b/docs/dom-elements.html @@ -63,7 +63,7 @@ @@ -193,8 +193,8 @@ underlineThickness unicode unicodeBidi unicodeRange unitsPerEm vAlphabetic vHanging vIdeographic vMathematical values vectorEffect version vertAdvY vertOriginX vertOriginY viewBox viewTarget visibility widths wordSpacing writingMode x x1 x2 xChannelSelector xHeight xlinkActuate xlinkArcrole -xlinkHref xlinkRole xlinkShow xlinkTitle xlinkType xmlBase xmlLang xmlSpace -y y1 y2 yChannelSelector z zoomAndPan +xlinkHref xlinkRole xlinkShow xlinkTitle xlinkType xmlns xmlnsXlink xmlBase +xmlLang xmlSpace y y1 y2 yChannelSelector z zoomAndPan
    @@ -332,6 +332,11 @@ y y1 y2 yChannelSelector z zoomAndPan +
  • + Higher-Order Components + +
  • +
    @@ -486,7 +491,7 @@ y y1 y2 yChannelSelector z zoomAndPan Facebook Open Source diff --git a/docs/error-decoder.html b/docs/error-decoder.html index 61960d8aa0..09e3de6ccf 100644 --- a/docs/error-decoder.html +++ b/docs/error-decoder.html @@ -63,7 +63,7 @@ @@ -224,6 +224,11 @@ +
  • + Higher-Order Components + +
  • + @@ -378,7 +383,7 @@ Facebook Open Source diff --git a/docs/events.html b/docs/events.html index a69cbd4eba..b244518581 100644 --- a/docs/events.html +++ b/docs/events.html @@ -63,7 +63,7 @@ @@ -437,6 +437,11 @@ onTimeUpdate onVolumeChange onWaiting +
  • + Higher-Order Components + +
  • + @@ -591,7 +596,7 @@ onTimeUpdate onVolumeChange onWaiting Facebook Open Source diff --git a/docs/forms-zh-CN.html b/docs/forms-zh-CN.html new file mode 100644 index 0000000000..61cf51283c --- /dev/null +++ b/docs/forms-zh-CN.html @@ -0,0 +1,10 @@ + + + +Redirecting… + + +

    Redirecting…

    +Click here if you are not redirected. + + diff --git a/docs/forms.html b/docs/forms.html index a575036ad9..51d11c6711 100644 --- a/docs/forms.html +++ b/docs/forms.html @@ -63,7 +63,7 @@ @@ -366,6 +366,11 @@ +
  • + Higher-Order Components + +
  • + @@ -520,7 +525,7 @@ Facebook Open Source diff --git a/docs/handling-events.html b/docs/handling-events.html index e8f0a76301..f4f862229c 100644 --- a/docs/handling-events.html +++ b/docs/handling-events.html @@ -63,7 +63,7 @@ @@ -331,6 +331,11 @@ +
  • + Higher-Order Components + +
  • + @@ -485,7 +490,7 @@ Facebook Open Source diff --git a/docs/hello-world.html b/docs/hello-world.html index ddfb3bb41c..1caa3dcbd1 100644 --- a/docs/hello-world.html +++ b/docs/hello-world.html @@ -63,7 +63,7 @@ @@ -234,6 +234,11 @@ +
  • + Higher-Order Components + +
  • + @@ -388,7 +393,7 @@ Facebook Open Source diff --git a/docs/higher-order-components.html b/docs/higher-order-components.html new file mode 100644 index 0000000000..47183f79c2 --- /dev/null +++ b/docs/higher-order-components.html @@ -0,0 +1,750 @@ + + + + + + + + + Higher-Order Components - React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    + Edit on GitHub +

    + Higher-Order Components +

    +
    + +

    A higher-order component (HOC) is an advanced technique in React for reusing component logic. HOCs are not part of the React API, per se. They are a pattern that emerges from React's compositional nature.

    + +

    Concretely, a higher-order component is a function that takes a component and returns a new component.

    +
    const EnhancedComponent = higherOrderComponent(WrappedComponent);
    +
    +

    Whereas a component transforms props into UI, a higher-order component transforms a component into another component.

    + +

    HOCs are common in third-party React libraries, such as Redux's connect and Relay's createContainer.

    + +

    In this document, we'll discuss why higher-order components are useful, and how to write your own.

    +

    Use HOCs For Cross-Cutting Concerns #

    +
    +

    Note

    + +

    We previously recommended mixins as a way to handle cross-cutting concerns. We've since realized that mixins create more trouble than they are worth. Read more about why we've moved away from mixins and how you can transition your existing components.

    +
    + +

    Components are the primary unit of code reuse in React. However, you'll find that some patterns aren't a straightforward fit for traditional components.

    + +

    For example, say you have a CommentList component that subscribes to an external data source to render a list of comments:

    +
    class CommentList extends React.Component {
    +  constructor() {
    +    super();
    +    this.handleChange = this.handleChange.bind(this);
    +    this.state = {
    +      // "DataSource" is some global data source
    +      comments: DataSource.getComments()
    +    };
    +  }
    +
    +  componentDidMount() {
    +    // Subscribe to changes
    +    DataSource.addChangeListener(this.handleChange);
    +  }
    +
    +  componentWillUnmount() {
    +    // Clean up listener
    +    DataSource.removeChangeListener(this.handleChange);
    +  }
    +
    +  handleChange() {
    +    // Update component state whenever the data source changes
    +    this.setState({
    +      comments: DataSource.getComments()
    +    });
    +  }
    +
    +  render() {
    +    return (
    +      <div>
    +        {this.state.comments.map((comment) => (
    +          <Comment comment={comment} key={comment.id} />
    +        ))}
    +      </div>
    +    );
    +  }}
    +
    +

    Later, you write a component for subscribing to a single blog post, which follows a similar pattern:

    +
    class BlogPost extends React.Component {
    +  constructor() {
    +    super();
    +    this.handleChange = this.handleChange.bind(this);
    +    this.state = {
    +      blogPost: DataSource.getBlogPost(props.id)
    +    };
    +  }
    +
    +  componentDidMount() {
    +    DataSource.addChangeListener(this.handleChange);
    +  }
    +
    +  componentWillUnmount() {
    +    DataSource.removeChangeListener(this.handleChange);
    +  }
    +
    +  handleChange() {
    +    this.setState({
    +      blogPost: DataSource.getBlogPost(this.props.id)
    +    });
    +  }
    +
    +  render() {
    +    return <BlogPost blogPost={this.state.blogPost} />;
    +  }}
    +
    +

    CommentList and BlogPost aren't identical — they call different methods on DataSource, and they render different output. But much of their implementation is the same:

    + +
      +
    • On mount, add a change listener to DataSource.
    • +
    • Inside the listener, call setState whenever the data source changes.
    • +
    • On unmount, remove the change listener.
    • +
    + +

    You can imagine that in a large app, this same pattern of subscribing to DataSource and calling setState will occur over and over again. We want an abstraction that allows us to define this logic in a single place and share them across many components. This is where higher-order components excel.

    + +

    We can write a function that creates components, like CommentList and BlogPost, that subscribe to DataSource. The function will accept as one of its arguments a child component that receives the subscribed data as a prop. Let's call the function withSubscription:

    +
    const CommentListWithSubscription = withSubscription(
    +  CommentList,
    +  (DataSource) => DataSource.getComments()
    +);
    +
    +const BlogPostWithSubscription = withSubscription(
    +  BlogPost,
    +  (DataSource, props) => DataSource.getBlogPost(props.id)
    +});
    +
    +

    The first parameter is the wrapped component. The second parameter retrieves the data we're interested in, given a DataSource and the current props.

    + +

    When CommentListWithSubscription and BlogPostWithSubscription are rendered, CommentList and BlogPost will be passed a data prop with the most current data retrieved from DataSource:

    +
    // This function takes a component...
    +function withSubscription(WrappedComponent, selectData) {
    +  // ...and returns another component...
    +  return class extends React.Component {
    +    constructor(props) {
    +      super(props);
    +      this.handleChange = this.handleChange.bind(this);
    +      this.state = {
    +        data: selectData(DataSource, props)
    +      };
    +    }
    +
    +    componentDidMount() {
    +      // ... that takes care of the subscription...
    +      DataSource.addChangeListener(this.handleChange);
    +    }
    +
    +    componentWillUnmount() {
    +      DataSource.removeChangeListener(this.handleChange);
    +    }
    +
    +    handleChange() {
    +      this.setState({
    +        comments: selectData(DataSource, this.props)
    +      });
    +    }
    +
    +    render() {
    +      // ... and renders the wrapped component with the fresh data!
    +      // Notice that we pass through any additional props
    +      return <WrappedComponent data={this.state.data} {...this.props} />;
    +    }
    +  });
    +}
    +
    +

    Note that an HOC doesn't modify the input component, nor does it use inheritance to copy its behavior. Rather, an HOC composes the original component by wrapping it in a container component. An HOC is a pure function with zero side-effects.

    + +

    And that's it! The wrapped component receives all the props of the container, along with a new prop, data, which it uses to render its output. The HOC isn't concerned with how or why the data is used, and the wrapped component isn't concerned with where the data came from.

    + +

    Because withSubscription is a normal function, you can add as many or as few arguments as you like. For example, you may want to make the name of the data prop configurable, to further isolate the HOC from the wrapped component. Or you could accept an argument that configures shouldComponentUpdate, or one that configures the data source. These are all possible because the HOC has full control over how the component is defined.

    + +

    Like components, the contract between withSubscription and the wrapped component is entirely props-based. This makes it easy to swap one HOC for a different one, as long as they provide the same props to the wrapped component. This may be useful if you change data-fetching libraries, for example.

    +

    Don't Mutate the Original Component. Use Composition. #

    +

    Resist the temptation to modify a component's prototype (or otherwise mutate it) inside an HOC.

    +
    function logProps(InputComponent) {
    +  InputComponent.prototype.componentWillReceiveProps(nextProps) {
    +    console.log('Current props: ', this.props);
    +    console.log('Next props: ', nextProps);
    +  }
    +  // The fact that we're returning the original input is a hint that it has
    +  // been mutated.
    +  return InputComponent;
    +}
    +
    +// EnhancedComponent will log whenever props are received
    +const EnhancedComponent = logProps(InputComponent);
    +
    +

    There are a few problems with this. One is that the input component cannot be reused separately from the enhanced component. More crucially, if you apply another HOC to EnhancedComponent that also mutates shouldComponentUpdate, the first HOC's functionality will be overridden! This HOC also won't work with function components, which do not have lifecycle methods.

    + +

    Mutating HOCs are a leaky abstraction—the consumer must know how they are implemented in order to avoid conflicts with other HOCs.

    + +

    Instead of mutation, HOCs should use composition, by wrapping the input component in a container component:

    +
    function logProps(WrappedComponent) {
    +  return class extends React.Component {
    +    componentWillReceiveProps(nextProps) {
    +      console.log('Current props: ', this.props);
    +      console.log('Next props: ', nextProps);
    +    }
    +    render() {
    +      // Wraps the input component in a container, without mutating it. Good!
    +      return <WrappedComponent {...this.props} />;
    +    }
    +  }
    +}
    +
    +

    This HOC has the same functionality as the mutating version while avoiding the potential for clashes. It works equally well with class and functional components. And because it's a pure function, it's composable with other HOCs, or even with itself.

    + +

    You may have noticed similarities between HOCs and a pattern called container components. Container components are part of a strategy of separating responsibility between high-level and low-level concerns. Containers manage things like subscriptions and state, and pass props to components that handle things like rendering UI. HOCs use containers as part of their implementation. You can think of HOCs as parameterized container component definitions.

    +

    Convention: Pass Unrelated Props Through to the Wrapped Component #

    +

    HOCs add features to a component. They shouldn't drastically alter its contract. It's expected that the component returned from an HOC has a similar interface to the wrapped component.

    + +

    HOCs should pass through props that are unrelated to its specific concern. Most HOCs contain a render method that looks something like this:

    +
    render() {
    +  // Filter out extra props that are specific to this HOC and shouldn't be
    +  // passed through
    +  const { extraProp, ...passThroughProps } = this.props;
    +
    +  // Inject props into the wrapped component. These are usually state values or
    +  // instance methods.
    +  const injectedProp = someStateOrInstanceMethod;
    +
    +  // Pass props to wrapped component
    +  return (
    +    <WrappedComponent
    +      injectedProp={injectedProp}
    +      {...passThroughProps}
    +    />
    +  );
    +}
    +
    +

    This convention helps ensure that HOCs are as flexible and reusable as possible.

    +

    Convention: Maximizing Composability #

    +

    Not all HOCs look the same. Sometimes they accept only a single argument, the wrapped component:

    +
    const NavbarWithRouter = withRouter(Navbar);
    +
    +

    Usually, HOCs accept additional arguments. In this example from Relay, a config object is used to specify a component's data dependencies:

    +
    const CommentWithRelay = Relay.createContainer(Comment, config);
    +
    +

    The most common signature for HOCs looks like this:

    +
    // React Redux's `connect`
    +const ConnectedComment = connect(commentSelector, commentActions)(Comment);
    +
    +

    What?! If you break it apart, it's easier to see what's going on.

    +
    // connect is a function that returns another function
    +const enhance = connect(commentListSelector, commentListActions);
    +// The returned function is an HOC, which returns a component that is connected
    +// to the Redux store
    +const ConnectedComment = enhance(CommentList);
    +
    +

    In other words, connect is a higher-order function that returns a higher-order component!

    + +

    This form may seem confusing or unnecessary, but it has a useful property. Single-argument HOCs like the one returned by the connect function have the signature Component => Component. Functions whose output type is the same as its input type are really easy to compose together.

    +
    // Instead of doing this...
    +const EnhancedComponent = connect(commentSelector)(withRouter(WrappedComponent))
    +
    +// ... you can use a function composition utility
    +// compose(f, g, h) is the same as (...args) => f(g(h(...args)))
    +const enhance = compose(
    +  // These are both single-argument HOCs
    +  connect(commentSelector),
    +  withRouter
    +)
    +const EnhancedComponent = enhance(WrappedComponent)
    +
    +

    (This same property also allows connect and other enhancer-style HOCs to be used as decorators, an experimental JavaScript proposal.)

    + +

    The compose utility function is provided by many third-party libraries including lodash (as lodash.flowRight), Redux, and Rambda.

    +

    Convention: Wrap the Display Name for Easy Debugging #

    +

    The container components created by HOCs show up in the React Developer Tools like any other component. To ease debugging, choose a display name that communicates that it's the result of an HOC.

    + +

    The most common technique is to wrap the display name of the wrapped component. So if your higher-order component is named withSubscription, and the wrapped component's display name is CommentList, use the display name WithSubscription(CommentList):

    +
    function withSubscription(WrappedComponent) {
    +  class WithSubscription extends React.Component {/* ... */}
    +  WithSubscription.displayName = `WithSubscription(${getDisplayName(WrappedComponent)})`;
    +  return WithSubscription;
    +}
    +
    +function getDisplayName(WrappedComponent) {
    +  return WrappedComponent.displayName || WrappedComponent.name || 'Component';
    +}
    +

    Caveats #

    +

    Higher-order components come with a few caveats that aren't immediately obvious if you're new to React.

    +

    Don't Use HOCs Inside the render Method #

    +

    React's diffing algorithm (called reconciliation) uses component identity to determine whether it should update the existing subtree or throw it away and mount a new one. If the component returned from render is identical (===) to the component from the previous render, React recursively updates the subtree by diffing it with the new one. If they're not equal, the previous subtree is unmounted completely.

    + +

    Normally, you shouldn't need to think about this. But it matters for HOCs because it means you can't apply an HOC to a component within the render method of a component:

    +
    render() {
    +  // A new version of EnhancedComponent is created on every render
    +  // EnhancedComponent1 !== EnhancedComponent2
    +  const EnhancedComponent = enhance(MyComponent);
    +  // That causes the entire subtree to unmount/remount each time!
    +  return <EnhancedComponent />;
    +}
    +
    +

    The problem here isn't just about performance — remounting a component causes the state of that component and all of its children to be lost.

    + +

    Instead, apply HOCs outside the component definition so that the resulting component is created only once. Then, its identity will be consistent across renders. This is usually what you want, anyway.

    + +

    In those rare cases where you need to apply an HOC dynamically, you can also do it inside a component's lifecycle methods or its constructor.

    +

    Static Methods Must Be Copied Over #

    +

    Sometimes it's useful to define a static method on a React component. For example, Relay containers expose a static method getFragment to facilitate the composition of GraphQL fragments.

    + +

    When you apply an HOC to a component, though, the original component is wrapped with a container component. That means the new component does not have any of the static methods of the original component.

    +
    // Define a static method
    +WrappedComponent.staticMethod = function() {/*...*/}
    +// Now apply an HOC
    +const EnhancedComponent = enhance(WrappedComponent);
    +
    +// The enhanced component has no static method
    +typeof EnhancedComponent.staticMethod === 'undefined' // true
    +
    +

    To solve this, you could copy the methods onto the container before returning it:

    +
    function enhance(WrappedComponent) {
    +  class Enhance extends React.Component {/*...*/}
    +  // Must know exactly which method(s) to copy :(
    +  Enhance.staticMethod = WrappedComponent.staticMethod;
    +  return Enhance;
    +}
    +
    +

    However, this requires you to know exactly which methods need to be copied. You can use hoist-non-react-statics to automatically copy all non-React static methods:

    +
    import hoistNonReactStatic from 'hoist-non-react-statics';
    +function enhance(WrappedComponent) {
    +  class Enhance extends React.Component {/*...*/}
    +  hoistNonReactStatic(Enhance, WrappedComponent);
    +  return Enhance;
    +}
    +
    +

    Another possible solution is to export the static method separately from the component itself.

    +
    // Instead of...
    +MyComponent.someFunction = someFunction;
    +export default MyComponent;
    +
    +// ...export the method separately...
    +export { someFunction };
    +
    +// ...and in the consuming module, import both
    +import MyComponent, { someFunction } from './MyComponent.js';
    +

    Refs Aren't Passed Through #

    +

    While the convention for higher-order components is to pass through all props to the wrapped component, it's not possible to pass through refs. That's because ref is not really a prop — like key, it's handled specially by React. If you add a ref to an element whose component is the result of an HOC, the ref refers to an instance of the outermost container component, not the wrapped component.

    + +

    If you find yourself facing this problem, the ideal solution is to figure out how to avoid using ref at all. Occasionally, users who are new to the React paradigm rely on refs in situations where a prop would work better.

    + +

    That said, there are times when refs are a necessary escape hatch — React wouldn't support them otherwise. Focusing an input field is an example where you may want imperative control of a component. In that case, one solution is to pass a ref callback as a normal prop, by giving it a different name:

    +
    function Field({ inputRef, ...rest }) {
    +  return <input ref={inputRef} {...rest} />;
    +}
    +
    +// Wrap Field in a higher-order component
    +const EnhancedField = enhance(Field);
    +
    +// Inside a class component's render method...
    +<EnhancedField
    +  inputRef={(inputEl) => {
    +    // This callback gets passed through as a regular prop
    +    this.inputEl = inputEl
    +  }}
    +/>
    +
    +// Now you can call imperative methods
    +this.inputEl.focus();
    +
    +

    This is not a perfect solution by any means. We prefer that refs remain a library concern, rather than require you to manually handle them. We are exploring ways to solve this problem so that using an HOC is unobservable.

    + + +
    + + +
    +
    + + + +
    + + + + +
    + +
    + + + diff --git a/docs/installation.html b/docs/installation.html index 76179fa54c..db328fd5b5 100644 --- a/docs/installation.html +++ b/docs/installation.html @@ -63,7 +63,7 @@ @@ -100,17 +100,19 @@ npm start

    Installing React #

    We recommend using Yarn or npm for managing front-end dependencies. If you're new to package managers, the Yarn documentation is a good place to get started.

    To install React with Yarn, run:

    -
    yarn add react react-dom
    +
    yarn init
    +yarn add react react-dom
     

    To install React with npm, run:

    -
    npm install --save react react-dom
    +
    npm init
    +npm install --save react react-dom
     

    Both Yarn and npm download packages from the npm registry.

    Enabling ES6 and JSX #

    @@ -118,7 +120,7 @@ npm start

    The Babel setup instructions explain how to configure Babel in many different build environments. Make sure you install babel-preset-react and babel-preset-es2015 and enable them in your .babelrc configuration, and you're good to go.

    Hello World with ES6 and JSX #

    -

    We recommend using a bundler like webpack or Browserify so you can write modular code and bundle it together into small packages to optimize load time.

    +

    We recommend using a bundler like webpack or Browserify so you can write modular code and bundle it together into small packages to optimize load time.

    The smallest React example looks like this:

    import React from 'react';
    @@ -291,6 +293,11 @@ npm start
                 
               
             
    +          
  • + Higher-Order Components + +
  • +
    @@ -445,7 +452,7 @@ npm start Facebook Open Source diff --git a/docs/introducing-jsx.html b/docs/introducing-jsx.html index 8085fa625f..5725155265 100644 --- a/docs/introducing-jsx.html +++ b/docs/introducing-jsx.html @@ -63,7 +63,7 @@
    @@ -330,6 +330,11 @@ +
  • + Higher-Order Components + +
  • + @@ -484,7 +489,7 @@ Facebook Open Source diff --git a/docs/jsx-in-depth.html b/docs/jsx-in-depth.html index d0c00f2385..4bcdf35a1b 100644 --- a/docs/jsx-in-depth.html +++ b/docs/jsx-in-depth.html @@ -63,7 +63,7 @@ @@ -198,7 +198,7 @@

    You can pass any JavaScript expression as a prop, by surrounding it with {}. For example, in this JSX:

    <MyComponent foo={1 + 2 + 3 + 4} />
     
    -

    For MyComponent, The value of props.foo will be 10 because the expression 1 + 2 + 3 + 4 gets evaluated.

    +

    For MyComponent, the value of props.foo will be 10 because the expression 1 + 2 + 3 + 4 gets evaluated.

    if statements and for loops are not expressions in JavaScript, so they can't be used in JSX directly. Instead, you can put these in the surrounding code. For example:

    function NumberDescriber(props) {
    @@ -500,6 +500,11 @@
                 
               
             
    +          
  • + Higher-Order Components + +
  • +
    @@ -654,7 +659,7 @@ Facebook Open Source diff --git a/docs/lifting-state-up.html b/docs/lifting-state-up.html index 6aeafc7c5e..d5478c6185 100644 --- a/docs/lifting-state-up.html +++ b/docs/lifting-state-up.html @@ -63,7 +63,7 @@ @@ -419,6 +419,11 @@ +
  • + Higher-Order Components + +
  • + @@ -573,7 +578,7 @@ Facebook Open Source diff --git a/docs/lists-and-keys.html b/docs/lists-and-keys.html index 79778d93c1..1a21c9cca8 100644 --- a/docs/lists-and-keys.html +++ b/docs/lists-and-keys.html @@ -63,7 +63,7 @@ @@ -103,7 +103,7 @@ document.getElementById('root') );
    -

    Try it out on CodePen.

    +

    Try it on CodePen.

    This code displays a bullet list of numbers between 1 and 5.

    Basic List Component #

    @@ -147,7 +147,7 @@ document.getElementById('root') );
    -

    Try it out on CodePen.

    +

    Try it on CodePen.

    Keys #

    Keys help React identify which items have changed, are added, or are removed. Keys should be given to the elements inside the array to give the elements a stable identity:

    const numbers = [1, 2, 3, 4, 5];
    @@ -234,7 +234,7 @@
       document.getElementById('root')
     );
     
    -

    Try it out on CodePen.

    +

    Try it on CodePen.

    A good rule of thumb is that elements inside the map() call need keys.

    Keys Must Only Be Unique Among Siblings #

    @@ -273,7 +273,7 @@ document.getElementById('root') );
    -

    Try it out on CodePen.

    +

    Try it on CodePen.

    Keys serve as a hint to React but they don't get passed to your components. If you need the same value in your component, pass it explicitly as a prop with a different name:

    const content = posts.map((post) =>
    @@ -312,7 +312,7 @@
       );
     }
     
    -

    Try it out on CodePen.

    +

    Try it on CodePen.

    Sometimes this results in clearer code, but this style can also be abused. Like in JavaScript, it is up to you to decide whether it is worth extracting a variable for readability. Keep in mind that if the map() body is too nested, it might be a good time to extract a component.

    @@ -456,6 +456,11 @@ +
  • + Higher-Order Components + +
  • + @@ -610,7 +615,7 @@ Facebook Open Source diff --git a/docs/optimizing-performance.html b/docs/optimizing-performance.html index 109a15a9a0..a287d5901c 100644 --- a/docs/optimizing-performance.html +++ b/docs/optimizing-performance.html @@ -63,7 +63,7 @@ @@ -138,11 +138,13 @@ } render() { - <button - color={this.props.color} - onClick={() => this.setState(state => ({count: state.count + 1}))}> - Count: {this.state.count} - </button> + return ( + <button + color={this.props.color} + onClick={() => this.setState(state => ({count: state.count + 1}))}> + Count: {this.state.count} + </button> + ); } }
    @@ -154,11 +156,13 @@ } render() { - <button - color={this.props.color} - onClick={() => this.setState(state => ({count: state.count + 1}))}> - Count: {this.state.count} - </button> + return ( + <button + color={this.props.color} + onClick={() => this.setState(state => ({count: state.count + 1}))}> + Count: {this.state.count} + </button> + ); } } @@ -394,6 +398,11 @@ +
  • + Higher-Order Components + +
  • + @@ -548,7 +557,7 @@ Facebook Open Source diff --git a/docs/perf.html b/docs/perf.html index b87303fe7c..5c42bb8a5c 100644 --- a/docs/perf.html +++ b/docs/perf.html @@ -63,7 +63,7 @@ @@ -311,6 +311,11 @@ +
  • + Higher-Order Components + +
  • + @@ -465,7 +470,7 @@ Facebook Open Source diff --git a/docs/pure-render-mixin.html b/docs/pure-render-mixin.html index 96f255d231..30af752768 100644 --- a/docs/pure-render-mixin.html +++ b/docs/pure-render-mixin.html @@ -63,7 +63,7 @@ @@ -81,7 +81,7 @@

    Note

    -

    The PureRenderMixin mixin predates React.PureComponent. This reference doc is provided for legacy purposes, and you should consider using React.PureComponent instead.

    +

    The PureRenderMixin mixin predates React.PureComponent. This reference doc is provided for legacy purposes, and you should consider using React.PureComponent instead.

    If your React component's render function renders the same result given the same props and state, you can use this mixin for a performance boost in some cases.

    @@ -255,6 +255,11 @@ +
  • + Higher-Order Components + +
  • + @@ -409,7 +414,7 @@ Facebook Open Source diff --git a/docs/react-api.html b/docs/react-api.html index b9f1114649..5ffa86ea2c 100644 --- a/docs/react-api.html +++ b/docs/react-api.html @@ -63,7 +63,7 @@ @@ -233,7 +233,7 @@

    React.Children.forEach #

    React.Children.forEach(children, function[(thisArg)])
     

    Like React.Children.map() but does not return an array.

    -

    React.Children.count #

    Children.count(children)
    +

    React.Children.count #

    React.Children.count(children)
     

    Returns the total number of components in children, equal to the number of times that a callback passed to map or forEach would be invoked.

    React.Children.only #

    React.Children.only(children)
    @@ -475,6 +475,11 @@
                 
               
             
    +          
  • + Higher-Order Components + +
  • +
    @@ -629,7 +634,7 @@ Facebook Open Source diff --git a/docs/react-component.html b/docs/react-component.html index c5d4e270be..012db3e22b 100644 --- a/docs/react-component.html +++ b/docs/react-component.html @@ -63,7 +63,7 @@
    @@ -191,7 +191,7 @@

    Note that React may call this method even if the props have not changed, so make sure to compare the current and next values if you only want to handle changes. This may occur when the parent component causes your component to re-render.

    -

    componentWillReceiveProps() is not invoked if you just call this.setState()

    +

    React doesn't call componentWillReceiveProps with initial props during mounting. It only calls this method if some of component's props may update. Calling this.setState generally doesn't trigger componentWillReceiveProps.


    shouldComponentUpdate() #

    shouldComponentUpdate(nextProps, nextState)
    @@ -459,6 +459,11 @@
                 
               
             
    +          
  • + Higher-Order Components + +
  • +
    @@ -613,7 +618,7 @@ Facebook Open Source diff --git a/docs/react-dom-server.html b/docs/react-dom-server.html index 43e162cf0b..16108f210a 100644 --- a/docs/react-dom-server.html +++ b/docs/react-dom-server.html @@ -63,7 +63,7 @@ @@ -235,6 +235,11 @@ +
  • + Higher-Order Components + +
  • + @@ -389,7 +394,7 @@ Facebook Open Source diff --git a/docs/react-dom.html b/docs/react-dom.html index 84ca1c26dc..a856e8baf0 100644 --- a/docs/react-dom.html +++ b/docs/react-dom.html @@ -63,7 +63,7 @@ @@ -277,6 +277,11 @@ and should be avoided because future versions of React may render components asy +
  • + Higher-Order Components + +
  • + @@ -431,7 +436,7 @@ and should be avoided because future versions of React may render components asy Facebook Open Source diff --git a/docs/react-without-es6.html b/docs/react-without-es6.html index 75fda5adad..2cdd67de7c 100644 --- a/docs/react-without-es6.html +++ b/docs/react-without-es6.html @@ -63,7 +63,7 @@ @@ -144,12 +144,13 @@
    class SayHello extends React.Component {
       constructor(props) {
         super(props);
    +    this.state = {message: 'Hello!'};
         // This line is important!
         this.handleClick = this.handleClick.bind(this);
       }
     
       handleClick() {
    -    alert('Hello!');
    +    alert(this.state.message);
       }
     
       render() {
    @@ -164,8 +165,12 @@
     

    With React.createClass(), this is not necessary because it binds all methods:

    var SayHello = React.createClass({
    +  getInitialState: function() {
    +    return {message: 'Hello!'};
    +  },
    +
       handleClick: function() {
    -    alert('Hello!');
    +    alert(this.state.message);
       },
     
       render: function() {
    @@ -181,10 +186,14 @@
     
     

    If the boilerplate code is too unattractive to you, you may enable the experimental Class Properties syntax proposal with Babel:

    class SayHello extends React.Component {
    +  constructor(props) {
    +    super(props);
    +    this.state = {message: 'Hello!'};
    +  }
       // WARNING: this syntax is experimental!
       // Using an arrow here binds the method:
       handleClick = () => {
    -    alert('Hello!');
    +    alert(this.state.message);
       }
     
       render() {
    @@ -394,6 +403,11 @@
                 
               
             
    +          
  • + Higher-Order Components + +
  • +
    @@ -548,7 +562,7 @@ Facebook Open Source diff --git a/docs/react-without-jsx.html b/docs/react-without-jsx.html index 360c2abdac..946907b60c 100644 --- a/docs/react-without-jsx.html +++ b/docs/react-without-jsx.html @@ -63,7 +63,7 @@
    @@ -256,6 +256,11 @@ +
  • + Higher-Order Components + +
  • + @@ -410,7 +415,7 @@ Facebook Open Source diff --git a/docs/reconciliation.html b/docs/reconciliation.html index 081a3d27e5..2783b5a8e5 100644 --- a/docs/reconciliation.html +++ b/docs/reconciliation.html @@ -63,7 +63,7 @@ @@ -328,6 +328,11 @@ +
  • + Higher-Order Components + +
  • + @@ -482,7 +487,7 @@ Facebook Open Source diff --git a/docs/refs-and-the-dom.html b/docs/refs-and-the-dom.html index d57f15303e..8fd66c5761 100644 --- a/docs/refs-and-the-dom.html +++ b/docs/refs-and-the-dom.html @@ -63,7 +63,7 @@ @@ -291,6 +291,11 @@ +
  • + Higher-Order Components + +
  • + @@ -445,7 +450,7 @@ Facebook Open Source diff --git a/docs/rendering-elements.html b/docs/rendering-elements.html index b5cde4b45d..50b1646dfe 100644 --- a/docs/rendering-elements.html +++ b/docs/rendering-elements.html @@ -63,7 +63,7 @@ @@ -291,6 +291,11 @@ +
  • + Higher-Order Components + +
  • + @@ -445,7 +450,7 @@ Facebook Open Source diff --git a/docs/shallow-compare.html b/docs/shallow-compare.html index 26118b2dea..54d61e51e0 100644 --- a/docs/shallow-compare.html +++ b/docs/shallow-compare.html @@ -63,7 +63,7 @@ @@ -245,6 +245,11 @@ It does this by iterating on the keys of the objects being compared and returnin +
  • + Higher-Order Components + +
  • + @@ -399,7 +404,7 @@ It does this by iterating on the keys of the objects being compared and returnin Facebook Open Source diff --git a/docs/state-and-lifecycle.html b/docs/state-and-lifecycle.html index 56235c385f..2018e6be2e 100644 --- a/docs/state-and-lifecycle.html +++ b/docs/state-and-lifecycle.html @@ -63,7 +63,7 @@ @@ -419,7 +419,7 @@

    This also works for user-defined components:

    <FormattedDate date={this.state.date} />
     
    -

    The FormattedDate component would receive the date in its props and wouldn't know whether it came from the Clock's state, the props, or was typed by hand:

    +

    The FormattedDate component would receive the date in its props and wouldn't know whether it came from the Clock's state, from the Clock's props, or was typed by hand:

    function FormattedDate(props) {
       return <h2>It is {props.date.toLocaleTimeString()}.</h2>;
     }
    @@ -592,6 +592,11 @@
                 
               
             
    +          
  • + Higher-Order Components + +
  • +
    @@ -746,7 +751,7 @@ Facebook Open Source diff --git a/docs/test-utils.html b/docs/test-utils.html index 7373068646..7b94fdaf1c 100644 --- a/docs/test-utils.html +++ b/docs/test-utils.html @@ -63,7 +63,7 @@ @@ -437,6 +437,11 @@ +
  • + Higher-Order Components + +
  • + @@ -591,7 +596,7 @@ Facebook Open Source diff --git a/docs/thinking-in-react.html b/docs/thinking-in-react.html index f8d81b1be8..ab7568e61d 100644 --- a/docs/thinking-in-react.html +++ b/docs/thinking-in-react.html @@ -63,7 +63,7 @@ @@ -361,6 +361,11 @@ +
  • + Higher-Order Components + +
  • + @@ -515,7 +520,7 @@ Facebook Open Source diff --git a/docs/two-way-binding-helpers.html b/docs/two-way-binding-helpers.html index 6f88ae40b8..5f6a6ffd7d 100644 --- a/docs/two-way-binding-helpers.html +++ b/docs/two-way-binding-helpers.html @@ -63,7 +63,7 @@ @@ -314,6 +314,11 @@ +
  • + Higher-Order Components + +
  • + @@ -468,7 +473,7 @@ Facebook Open Source diff --git a/docs/typechecking-with-proptypes.html b/docs/typechecking-with-proptypes.html index 3a6f97fd66..dd4fd67bca 100644 --- a/docs/typechecking-with-proptypes.html +++ b/docs/typechecking-with-proptypes.html @@ -63,7 +63,7 @@ @@ -348,6 +348,11 @@ +
  • + Higher-Order Components + +
  • + @@ -502,7 +507,7 @@ Facebook Open Source diff --git a/docs/uncontrolled-components.html b/docs/uncontrolled-components.html index 76f774a8c2..e537a8d528 100644 --- a/docs/uncontrolled-components.html +++ b/docs/uncontrolled-components.html @@ -63,7 +63,7 @@ @@ -267,6 +267,11 @@ +
  • + Higher-Order Components + +
  • + @@ -421,7 +426,7 @@ Facebook Open Source diff --git a/docs/update.html b/docs/update.html index c00ad2b004..0d68b1cf0f 100644 --- a/docs/update.html +++ b/docs/update.html @@ -63,7 +63,7 @@ @@ -285,6 +285,11 @@ +
  • + Higher-Order Components + +
  • + @@ -439,7 +444,7 @@ Facebook Open Source diff --git a/docs/videos-it-IT.html b/docs/videos-it-IT.html index 18aecb27e5..a53aed6f13 100644 --- a/docs/videos-it-IT.html +++ b/docs/videos-it-IT.html @@ -63,7 +63,7 @@ @@ -305,7 +305,7 @@ Facebook Open Source diff --git a/docs/videos-ko-KR.html b/docs/videos-ko-KR.html index 965a345c28..bccf8e11a4 100644 --- a/docs/videos-ko-KR.html +++ b/docs/videos-ko-KR.html @@ -63,7 +63,7 @@ @@ -306,7 +306,7 @@ Facebook Open Source diff --git a/docs/videos-zh-CN.html b/docs/videos-zh-CN.html index 2f2a4c08b1..a7fe8c60b7 100644 --- a/docs/videos-zh-CN.html +++ b/docs/videos-zh-CN.html @@ -63,7 +63,7 @@ @@ -305,7 +305,7 @@ Facebook Open Source diff --git a/docs/web-components.html b/docs/web-components.html index e26f188bfd..029fadc8c0 100644 --- a/docs/web-components.html +++ b/docs/web-components.html @@ -63,7 +63,7 @@ @@ -257,6 +257,11 @@ You will need to manually attach event handlers to handle these events within yo +
  • + Higher-Order Components + +
  • + @@ -411,7 +416,7 @@ You will need to manually attach event handlers to handle these events within yo Facebook Open Source diff --git a/downloads/react-15.4.1.zip b/downloads/react-15.4.1.zip new file mode 100644 index 0000000000..c29baf37e1 Binary files /dev/null and b/downloads/react-15.4.1.zip differ diff --git a/feed.xml b/feed.xml index 1ef1f46878..74b3bf0de4 100644 --- a/feed.xml +++ b/feed.xml @@ -379,7 +379,7 @@ I think we should just treat arrays of elements as a frag. This is useful for co <p><center><a target="_blank" href="/react/img/blog/react-50k-mock-full.jpg"><img src="/react/img/blog/react-50k-mock.jpg" width="400" height="410" alt="React website mock" /></a></center></p> -<p>In its earliest days, React benefitted tremendously from feedback, ideas, and technical contributions of early adopters and collaborators all over the company. While it might look like an overnight success in hindsight, the story of React is actually a great example of how new ideas often need to go through several rounds of refinement, iteration, and course correction over a long period of time before reaching their full potential.</p> +<p>In its earliest days, React benefited tremendously from feedback, ideas, and technical contributions of early adopters and collaborators all over the company. While it might look like an overnight success in hindsight, the story of React is actually a great example of how new ideas often need to go through several rounds of refinement, iteration, and course correction over a long period of time before reaching their full potential.</p> <p>React&#39;s approach to building user interfaces with functional programming principles has changed the way we do things in just a few short years. It goes without saying, but React would be nothing without the amazing open source community that&#39;s built up around it!</p> diff --git a/index.html b/index.html index ba32d8e199..84475cd485 100644 --- a/index.html +++ b/index.html @@ -63,7 +63,7 @@ @@ -212,7 +212,7 @@ Facebook Open Source diff --git a/js/ErrorDecoderComponent.js b/js/ErrorDecoderComponent.js index 0af3bb5a4b..ad46a7e7e6 100644 --- a/js/ErrorDecoderComponent.js +++ b/js/ErrorDecoderComponent.js @@ -140,8 +140,8 @@ var ErrorDecoder = function (_React$Component) { ErrorDecoder.prototype.componentWillMount = function componentWillMount() { var parseResult = parseQueryString(); if (parseResult != null) { - var code = parseResult[0]; - var args = parseResult[1]; + var code = parseResult[0], + args = parseResult[1]; if (errorMap[code]) { this.setState({ diff --git a/js/react-dom.js b/js/react-dom.js index f434adb0e8..b25fd38725 100644 --- a/js/react-dom.js +++ b/js/react-dom.js @@ -1,15 +1,15 @@ /** - * ReactDOM v15.4.0 + * ReactDOM v15.4.1 */ ;(function(f) { // CommonJS if (typeof exports === "object" && typeof module !== "undefined") { - f(require('react')); + module.exports = f(require('react')); // RequireJS } else if (typeof define === "function" && define.amd) { - require(['react'], f); + define(['react'], f); //