{"id":1295,"date":"2019-05-04T19:06:25","date_gmt":"2019-05-04T19:06:25","guid":{"rendered":"http:\/\/upmostlymulti.onpressidium.com\/?p=1295"},"modified":"2021-10-28T10:58:53","modified_gmt":"2021-10-28T15:58:53","slug":"settimeout-in-react-components-using-hooks","status":"publish","type":"post","link":"http:\/\/upmostly.com\/tutorials\/settimeout-in-react-components-using-hooks","title":{"rendered":"setTimeout in React Components Using Hooks"},"content":{"rendered":"\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1160\" height=\"600\" src=\"http:\/\/upmostly.com\/wp-content\/uploads\/setTimeout-hooks.jpg\" alt=\"A timer representing setTimeout inside of a React component\" class=\"wp-image-1305\" srcset=\"https:\/\/upmostly.com\/wp-content\/uploads\/setTimeout-hooks.jpg 1160w, https:\/\/upmostly.com\/wp-content\/uploads\/setTimeout-hooks-300x155.jpg 300w, https:\/\/upmostly.com\/wp-content\/uploads\/setTimeout-hooks-768x397.jpg 768w, https:\/\/upmostly.com\/wp-content\/uploads\/setTimeout-hooks-1024x530.jpg 1024w\" sizes=\"auto, (max-width: 1160px) 100vw, 1160px\" \/><\/figure>\n\n\n\n<p>Use <strong><em>setTimeout<\/em><\/strong> in your React components to execute a function or block of code after a period of time. Let&#8217;s explore how to use <strong><em>setTimeout<\/em><\/strong> in React. There is also a similar method called <strong><em>setInterval<\/em><\/strong>, you can <a href=\"http:\/\/upmostly.com\/tutorials\/setinterval-in-react-components-using-hooks\" target=\"_blank\" data-type=\"URL\" data-id=\"http:\/\/upmostly.com\/tutorials\/setinterval-in-react-components-using-hooks\" rel=\"noreferrer noopener\">learn more about it from this guide<\/a><\/p>\n\n\n\n<p>The TL;DR:<\/p>\n\n\n\n<div class=\"wp-block-cgb-block-codeplus\"><div class=\"upmostly-block better-code-block\"><div class=\"dark\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><div><span class=\"token function\">useEffect<\/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  <span class=\"token keyword\">const<\/span> timer <span class=\"token operator\">=<\/span> <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><span class=\"token string\">'This will run after 1 second!'<\/span><span class=\"token punctuation\">)<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=><\/span> <span class=\"token function\">clearTimeout<\/span><span class=\"token punctuation\">(<\/span>timer<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/div><\/code><\/pre><\/div><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">What is setTimeout?<\/h2>\n\n\n\n<p>The <strong><em>setTimeout<\/em><\/strong> method calls a function or runs some code after a period of time, specified using the second argument.<\/p>\n\n\n\n<p>For example, the code below prints &#8220;Hello, World!&#8221; to the developer console after 3,000 milliseconds (or 3 seconds).<\/p>\n\n\n\n<div class=\"wp-block-cgb-block-codeplus\"><div class=\"upmostly-block better-code-block\"><div class=\"dark\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><div><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><span class=\"token string\">'Hello, World!'<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/div><\/code><\/pre><\/div><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Using setTimeout in React Components<\/h2>\n\n\n\n<p>Using <strong><em>setTimeout<\/em><\/strong> inside of a React component is easy enough as it&#8217;s just a regular JavaScript method.<\/p>\n\n\n\n<p>For instance, let&#8217;s use <strong><em>setTimeout<\/em><\/strong> inside of a <a href=\"http:\/\/upmostly.com\/tutorials\/react-functional-vs-class-components\">functional React component<\/a> which uses Hooks. We&#8217;ll call <strong><em>setTimeout<\/em><\/strong> inside of the <strong><em>useEffect<\/em><\/strong> Hook, which is the equivalent of the<strong><em> componentDidMount<\/em><\/strong> lifecycle method in Class components.<\/p>\n\n\n\n<div class=\"wp-block-cgb-block-codeplus\"><div class=\"upmostly-block better-code-block\"><div class=\"dark\"><div class=\"code-editor-header\">App.js<\/div><pre class=\"language-jsx\"><code class=\"language-jsx\"><div><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useEffect <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">App<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=><\/span> <span class=\"token punctuation\">{<\/span>\n  \n  <span class=\"token function\">useEffect<\/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    <span class=\"token keyword\">const<\/span> timer <span class=\"token operator\">=<\/span> <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      <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Timeout called!'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=><\/span> <span class=\"token function\">clearTimeout<\/span><span class=\"token punctuation\">(<\/span>timer<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">><\/span><\/span><span class=\"token plain-text\">\n      Hello, World\n    <\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">><\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> App<span class=\"token punctuation\">;<\/span>\n<\/div><\/code><\/pre><\/div><\/div><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Our functional component runs the <strong><em>useEffect<\/em><\/strong> method when it first renders. If you want to learn more about Hooks, I recommend my tutorial on <a aria-label=\"Simplifying Forms using React Hooks (opens in a new tab)\" href=\"http:\/\/upmostly.com\/tutorials\/using-custom-react-hooks-simplify-forms\/\" target=\"_blank\" rel=\"noreferrer noopener\">Simplifying Forms using React Hooks<\/a>.<\/p><\/blockquote>\n\n\n\n<p>We schedule a new <strong><em>setTimeout <\/em><\/strong>called timer when the App component mounts for the first time.<\/p>\n\n\n\n<p>As a result, the code inside of the<strong><em> setTimeout<\/em><\/strong> block runs after 1 second as indicated by the 1000 millisecond value that&#8217;s passed into the second parameter of the <strong><em>setTimeout<\/em><\/strong> method.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Clearing setTimeout<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>A <strong><em>setTimeout<\/em><\/strong> timer must be cleared and handle properly, otherwise, you may experience adverse side effects in your code.<\/p><\/blockquote>\n\n\n\n<p>To clear or cancel a timer, you call the clearTimeout(); method, passing in the timer object that you created into <strong><em>clearTimeout()<\/em><\/strong>.<\/p>\n\n\n\n<p>For example, the code below shows how to properly clear a timer inside of a functional React component.<\/p>\n\n\n\n<div class=\"wp-block-cgb-block-codeplus\"><div class=\"upmostly-block better-code-block\"><div class=\"dark\"><div class=\"code-editor-header\">App.js<\/div><pre class=\"language-javascript\"><code class=\"language-javascript\"><div><span class=\"token operator\">...<\/span>\n\n<span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">App<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=><\/span> <span class=\"token punctuation\">{<\/span>\n\n  <span class=\"token function\">useEffect<\/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    <span class=\"token keyword\">const<\/span> timer <span class=\"token operator\">=<\/span> <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> console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Hello, World!\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=><\/span> <span class=\"token function\">clearTimeout<\/span><span class=\"token punctuation\">(<\/span>timer<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token operator\">...<\/span><\/div><\/code><\/pre><\/div><\/div><\/div>\n\n\n\n<p>And an example of clearing <strong><em>setTimeout<\/em><\/strong> inside of a React Class component:<\/p>\n\n\n\n<div class=\"wp-block-cgb-block-codeplus\"><div class=\"upmostly-block better-code-block\"><div class=\"dark\"><div class=\"code-editor-header\">App.js<\/div><pre class=\"language-javascript\"><code class=\"language-javascript\"><div><span class=\"token operator\">...<\/span>\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">App<\/span> <span class=\"token keyword\">extends<\/span> <span class=\"token class-name\">Component<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">let<\/span> timer <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\n  \n  <span class=\"token function\">componentDidMount<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    timer <span class=\"token operator\">=<\/span> <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> console<span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Hello, World!'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3000<\/span><span class=\"token punctuation\">)<\/span>\n  <span class=\"token punctuation\">}<\/span>\n  \n  <span class=\"token function\">componentWillUnmount<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token function\">clearTimeout<\/span><span class=\"token punctuation\">(<\/span>timer<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token operator\">...<\/span><\/div><\/code><\/pre><\/div><\/div><\/div>\n\n\n\n<p>Above all, it&#8217;s important that you clear timers, otherwise you could experience errors in your code.<\/p>\n\n\n\n<p>You&#8217;ll notice that in the first example of clearing a timer inside of a functional component, we&#8217;re returning an anonymous function from the <strong><em>useEffect<\/em><\/strong> Hook. This is the equivalent of <strong><em>componentWillUnmount<\/em><\/strong> as shown in the second example.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">setTimeout Gotchas <\/h2>\n\n\n\n<p><strong>Using a state property inside of a setTimeout does not use the current value of that state property.<\/strong><\/p>\n\n\n\n<p>I found this odd issue with <strong><em>setTimeout<\/em><\/strong> and state when I was trying to access a state prop inside of <strong><em>setTimeout<\/em><\/strong>.<\/p>\n\n\n\n<p>Take the example below:<\/p>\n\n\n\n<div class=\"wp-block-cgb-block-codeplus\"><div class=\"upmostly-block better-code-block\"><div class=\"dark\"><div class=\"code-editor-header\">TimeoutExample.js<\/div><pre class=\"language-jsx\"><code class=\"language-jsx\"><div><span class=\"token keyword\">import<\/span> React<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> useEffect<span class=\"token punctuation\">,<\/span> useState <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">TimeoutExample<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=><\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>countInTimeout<span class=\"token punctuation\">,<\/span> setCountInTimeout<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token function\">useEffect<\/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    <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      <span class=\"token function\">setCountInTimeout<\/span><span class=\"token punctuation\">(<\/span>count<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ count is 0 here<\/span>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token function\">setCount<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ Update count to be 5 after timeout is scheduled<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span><span class=\"token punctuation\">><\/span><\/span><span class=\"token plain-text\">\n      Count: <\/span><span class=\"token punctuation\">{<\/span>count<span class=\"token punctuation\">}<\/span><span class=\"token plain-text\">\n      <\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>br<\/span> <span class=\"token punctuation\">\/><\/span><\/span><span class=\"token plain-text\">\n      setTimeout Count: <\/span><span class=\"token punctuation\">{<\/span>countInTimeout<span class=\"token punctuation\">}<\/span><span class=\"token plain-text\">\n    <\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>div<\/span><span class=\"token punctuation\">><\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> TimeoutExample<span class=\"token punctuation\">;<\/span>\n<\/div><\/code><\/pre><\/div><\/div><\/div>\n\n\n\n<p>You would expect the value of countInTimeout to be 5, but it&#8217;s actually 0. <\/p>\n\n\n\n<p>Huh?! <\/p>\n\n\n\n<p>setTimeout is a closure, therefore, when<strong><em> setTimeout<\/em><\/strong> is scheduled it uses the value of count at that exact moment in time, which is the initial value of 0.<\/p>\n\n\n\n<p>To solve this, use the <a href=\"http:\/\/upmostly.com\/tutorials\/how-to-react-useref-hook\">useRef<\/a> Hook:<\/p>\n\n\n\n<div class=\"wp-block-cgb-block-codeplus\"><div class=\"upmostly-block better-code-block\"><div class=\"dark\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><div><span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  \n  <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">[<\/span>count<span class=\"token punctuation\">,<\/span> setCount<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">useState<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token keyword\">const<\/span> countRef <span class=\"token operator\">=<\/span> <span class=\"token function\">useRef<\/span><span class=\"token punctuation\">(<\/span>count<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  countRef<span class=\"token punctuation\">.<\/span>current <span class=\"token operator\">=<\/span> count<span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">const<\/span> <span class=\"token function-variable function\">getCountTimeout<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=><\/span> <span class=\"token punctuation\">{<\/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      <span class=\"token function\">setTimeoutCount<\/span><span class=\"token punctuation\">(<\/span>countRef<span class=\"token punctuation\">.<\/span>current<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n  \n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token operator\">...<\/span>\n  <span class=\"token punctuation\">)<\/span>\n  \n<span class=\"token punctuation\">}<\/span>\n\n<\/div><\/code><\/pre><\/div><\/div><\/div>\n\n\n\n<p>This solution is thanks to a discussion on Github: <a href=\"https:\/\/github.com\/facebook\/react\/issues\/14010\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/facebook\/react\/issues\/14010<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Use setTimeout in your React components to execute a function or block of code after a period of time. Let&#8217;s explore how to use setTimeout in React.<\/p>\n","protected":false},"author":8,"featured_media":1305,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[33,4,35],"class_list":["post-1295","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-beginner-react-tutorials","tag-react","tag-react-hooks"],"acf":[],"_links":{"self":[{"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/posts\/1295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/comments?post=1295"}],"version-history":[{"count":2,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/posts\/1295\/revisions"}],"predecessor-version":[{"id":3470,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/posts\/1295\/revisions\/3470"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/media\/1305"}],"wp:attachment":[{"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/media?parent=1295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/categories?post=1295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/tags?post=1295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}