{"componentChunkName":"component---src-templates-docs-js","path":"/docs/legacy-event-pooling.html","result":{"data":{"markdownRemark":{"html":"<blockquote>\n<p>Note</p>\n<p>This page is only relevant for React 16 and earlier, and for React Native.</p>\n<p>React 17 on the web <strong>does not</strong> use event pooling.</p>\n<p><a href=\"/blog/2020/08/10/react-v17-rc.html#no-event-pooling\">Read more</a> about this change in React 17.</p>\n</blockquote>\n<p>The <a href=\"/docs/events.html\"><code class=\"gatsby-code-text\">SyntheticEvent</code></a> objects are pooled. This means that the <code class=\"gatsby-code-text\">SyntheticEvent</code> object will be reused and all properties will be nullified after the event handler has been called. For example, this won’t work:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">function</span> <span class=\"token function\">handleChange</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">e</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// This won't work because the event object gets reused.</span>\n  <span class=\"token function\">setTimeout</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n    console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>e<span class=\"token punctuation\">.</span>target<span class=\"token punctuation\">.</span>value<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Too late!</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token number\">100</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>If you need to access event object’s properties after the event handler has run, you need to call <code class=\"gatsby-code-text\">e.persist()</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">function</span> <span class=\"token function\">handleChange</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">e</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// Prevents React from resetting its properties:</span>\n  e<span class=\"token punctuation\">.</span><span class=\"token function\">persist</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token function\">setTimeout</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n    console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>e<span class=\"token punctuation\">.</span>target<span class=\"token punctuation\">.</span>value<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Works</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token number\">100</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>","frontmatter":{"title":"Event Pooling","next":null,"prev":null},"fields":{"path":"content/docs/legacy-event-pooling.md","slug":"docs/legacy-event-pooling.html"}}},"pageContext":{"slug":"docs/legacy-event-pooling.html"}},"staticQueryHashes":[]}