{"componentChunkName":"component---src-templates-blog-js","path":"/blog/2013/07/23/community-roundup-5.html","result":{"data":{"markdownRemark":{"html":"<p>We launched the <a href=\"https://www.facebook.com/react\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">React Facebook Page</a> along with the React v0.4 launch. 700 people already liked it to get updated on the project :)</p>\n<h2 id=\"cross-browser-onchange\"><a href=\"#cross-browser-onchange\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Cross-browser onChange </h2>\n<p><a href=\"http://sophiebits.com/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Sophie Alpert</a> from <a href=\"https://www.khanacademy.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Khan Academy</a> worked on a cross-browser implementation of <code class=\"gatsby-code-text\">onChange</code> event that landed in v0.4. She wrote a blog post explaining the various browser quirks she had to deal with.</p>\n<blockquote>\n<p>First off, what is the input event? If you have an <code class=\"gatsby-code-text\">&lt;input&gt;</code> element and want to receive events whenever the value changes, the most obvious thing to do is to listen to the change event. Unfortunately, change fires only after the text field is defocused, rather than on each keystroke. The next obvious choice is the keyup event, which is triggered whenever a key is released. Unfortunately, keyup doesn’t catch input that doesn’t involve the keyboard (e.g., pasting from the clipboard using the mouse) and only fires once if a key is held down, rather than once per inserted character.</p>\n<p>Both keydown and keypress do fire repeatedly when a key is held down, but both fire immediately before the value changes, so to read the new value you have to defer the handler to the next event loop using <code class=\"gatsby-code-text\">setTimeout(fn, 0)</code> or similar, which slows down your app. Of course, like keyup, neither keydown nor keypress fires for non-keyboard input events, and all three can fire in cases where the value doesn’t change at all (such as when pressing the arrow keys).</p>\n<p><a href=\"http://sophiebits.com/2013/06/18/a-near-perfect-oninput-shim-for-ie-8-and-9.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Read the full post…</a></p>\n</blockquote>\n<h2 id=\"react-samples\"><a href=\"#react-samples\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>React Samples </h2>\n<p>Learning a new library is always easier when you have working examples you can play with. <a href=\"https://github.com/jhw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">jwh</a> put many of them on his <a href=\"https://github.com/jhw/react-samples\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react-samples GitHub repo</a>.</p>\n<blockquote>\n<p>Some simple examples with Facebook’s React framework</p>\n<ul>\n<li>Bootstrap action bar, modal and table <a href=\"https://rawgithub.com/jhw/react-samples/master/html/actionbar.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/bootstrap_actionbar.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#2</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/bootstrap_modal.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#3</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/bootstrap_striped_table.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#4</a></li>\n<li>Comments <a href=\"https://rawgithub.com/jhw/react-samples/master/html/comments1.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/comments2.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#2</a></li>\n<li>Data Table <a href=\"https://rawgithub.com/jhw/react-samples/master/html/datatable.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/datatable2.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#2</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/datatable3.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#3</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/datatable4.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#4</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/datatable5.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5</a></li>\n<li>Filter Bar <a href=\"https://rawgithub.com/jhw/react-samples/master/html/filterbar.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/filterbar2.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#2</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/filterbar3.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#3</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/filterbar4.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#4</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/filterbar5.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5</a></li>\n<li>Fundoo Rating <a href=\"https://rawgithub.com/jhw/react-samples/master/html/fundoo.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1</a></li>\n<li>Line Char: <a href=\"https://rawgithub.com/jhw/react-samples/master/html/linechart.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/linechart2.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#2</a></li>\n<li>Multi tabs <a href=\"https://rawgithub.com/jhw/react-samples/master/html/multitabs.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1</a></li>\n<li>Select <a href=\"https://rawgithub.com/jhw/react-samples/master/html/select.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1</a></li>\n<li>Simple Tabs <a href=\"https://rawgithub.com/jhw/react-samples/master/html/simpletabs.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/simpletabs2.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#2</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/simpletabs3.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#3</a>,\n<a href=\"https://rawgithub.com/jhw/react-samples/master/html/simpletabs4.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#4</a></li>\n<li>Toggle <a href=\"https://rawgithub.com/jhw/react-samples/master/html/toggle.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1</a></li>\n</ul>\n</blockquote>\n<h2 id=\"react-chosen-wrapper\"><a href=\"#react-chosen-wrapper\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>React Chosen Wrapper </h2>\n<p><a href=\"https://github.com/chenglou\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Cheng Lou</a> wrote a wrapper for the <a href=\"https://harvesthq.github.io/chosen/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Chosen</a> input library called <a href=\"https://github.com/chenglou/react-chosen\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react-chosen</a>. It took just 25 lines to be able to use jQuery component as a React one.</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span><span class=\"token function\">renderComponent</span><span class=\"token punctuation\">(</span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Chosen</span></span> <span class=\"token attr-name\">noResultsText</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>No result<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">value</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>Harvest<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">onChange</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>doSomething<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>option</span> <span class=\"token attr-name\">value</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>Facebook<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Facebook</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>option</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>option</span> <span class=\"token attr-name\">value</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>Harvest<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Harvest</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>option</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n  </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">Chosen</span></span><span class=\"token punctuation\">></span></span>\n<span class=\"token punctuation\">,</span> document<span class=\"token punctuation\">.</span><span class=\"token function\">getElementById</span><span class=\"token punctuation\">(</span><span class=\"token string\">'example'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h2 id=\"jsx-and-es6-template-strings\"><a href=\"#jsx-and-es6-template-strings\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>JSX and ES6 Template Strings </h2>\n<p><a href=\"http://domenicdenicola.com/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Domenic Denicola</a> wrote a slide deck about the great applications of ES6 features and one slide shows how we could use Template Strings to compile JSX at run-time without the need for a pre-processing phase.</p>\n<figure><iframe src=\"https://www.slideshare.net/slideshow/embed_code/24187146?rel=0&startSlide=36\" width=\"100%\" height=\"356\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px\" allowfullscreen webkitallowfullscreen mozallowfullscreen> </iframe></figure>\n<h2 id=\"react-presentation\"><a href=\"#react-presentation\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>React Presentation </h2>\n<p><a href=\"http://tomocchino.com/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Tom Occhino</a> and <a href=\"https://github.com/jordwalke\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Jordan Walke</a>, React developers, did a presentation of React at Facebook Seattle’s office. Check out the first 25 minutes for the presentation and the remaining 45 for a Q&#x26;A. I highly recommend you watching this video.</p>\n<div class=\"gatsby-resp-iframe-wrapper\" style=\"padding-bottom: 61.53846153846154%; position: relative; height: 0; overflow: hidden; \" > <figure><iframe src=\"//www.youtube-nocookie.com/embed/XxVg_s8xAms\" frameborder=\"0\" allowfullscreen style=\" position: absolute; top: 0; left: 0; width: 100%; height: 100%; \"></iframe></figure> </div>\n<h2 id=\"docs\"><a href=\"#docs\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Docs </h2>\n<p><a href=\"http://www.petehunt.net/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Pete Hunt</a> rewrote the entirety of the docs for v0.4. The goal was to add more explanation about why we built React and what the best practices are.</p>\n<blockquote>\n<p>Guides</p>\n<ul>\n<li><a href=\"/docs/why-react.html\">Why React?</a></li>\n<li>\n<p><a href=\"/docs/displaying-data.html\">Displaying Data</a></p>\n<ul>\n<li><a href=\"/docs/jsx-in-depth.html\">JSX in Depth</a></li>\n<li><a href=\"/docs/jsx-gotchas.html\">JSX Gotchas</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/interactivity-and-dynamic-uis.html\">Interactivity and Dynamic UIs</a></li>\n<li><a href=\"/docs/multiple-components.html\">Multiple Components</a></li>\n<li><a href=\"/docs/reusable-components.html\">Reusable Components</a></li>\n<li><a href=\"/docs/forms.html\">Forms</a></li>\n<li>\n<p><a href=\"/docs/working-with-the-browser.html\">Working With the Browser</a></p>\n<ul>\n<li><a href=\"/docs/more-about-refs.html\">More About Refs</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/tooling-integration.html\">Tooling integration</a></li>\n<li><a href=\"/docs/top-level-api.html\">Reference</a></li>\n</ul>\n</blockquote>","excerpt":"We launched the React Facebook Page along with the React v0.4 launch. 700 people already liked it to get updated on the project :) Cross-browser onChange  Sophie Alpert from Khan Academy worked on a cross-browser implementation of  event that landed in v0.4. She wrote a blog post explaining the various browser quirks she had to deal with. First off, what is the input event? If you have an  element and want to receive events whenever the value changes, the most obvious thing to do is to listen to…","frontmatter":{"title":"Community Round-up #5","next":null,"prev":null,"author":[{"frontmatter":{"name":"Vjeux","url":"https://twitter.com/vjeux"}}]},"fields":{"date":"July 23, 2013","path":"content/blog/2013-07-23-community-roundup-5.md","slug":"/blog/2013/07/23/community-roundup-5.html"}},"allMarkdownRemark":{"edges":[{"node":{"frontmatter":{"title":"Introducing the New JSX Transform"},"fields":{"slug":"/blog/2020/09/22/introducing-the-new-jsx-transform.html"}}},{"node":{"frontmatter":{"title":"React v17.0 Release Candidate: No New Features"},"fields":{"slug":"/blog/2020/08/10/react-v17-rc.html"}}},{"node":{"frontmatter":{"title":"React v16.13.0"},"fields":{"slug":"/blog/2020/02/26/react-v16.13.0.html"}}},{"node":{"frontmatter":{"title":"Building Great User Experiences with Concurrent Mode and Suspense"},"fields":{"slug":"/blog/2019/11/06/building-great-user-experiences-with-concurrent-mode-and-suspense.html"}}},{"node":{"frontmatter":{"title":"Preparing for the Future with React Prereleases"},"fields":{"slug":"/blog/2019/10/22/react-release-channels.html"}}},{"node":{"frontmatter":{"title":"Introducing the New React DevTools"},"fields":{"slug":"/blog/2019/08/15/new-react-devtools.html"}}},{"node":{"frontmatter":{"title":"React v16.9.0 and the Roadmap Update"},"fields":{"slug":"/blog/2019/08/08/react-v16.9.0.html"}}},{"node":{"frontmatter":{"title":"Is React Translated Yet? ¡Sí! Sim! はい！"},"fields":{"slug":"/blog/2019/02/23/is-react-translated-yet.html"}}},{"node":{"frontmatter":{"title":"React v16.8: The One With Hooks"},"fields":{"slug":"/blog/2019/02/06/react-v16.8.0.html"}}},{"node":{"frontmatter":{"title":"React v16.7: No, This Is Not the One With Hooks"},"fields":{"slug":"/blog/2018/12/19/react-v-16-7.html"}}}]}},"pageContext":{"slug":"/blog/2013/07/23/community-roundup-5.html"}},"staticQueryHashes":[]}