{"id":3649,"date":"2023-03-22T22:29:00","date_gmt":"2023-03-22T15:29:00","guid":{"rendered":"https:\/\/laoitdev.com\/?p=3649"},"modified":"2024-02-07T20:56:53","modified_gmt":"2024-02-07T13:56:53","slug":"react-hooks-usestate-useeffect-usecallback-and-usememo","status":"publish","type":"post","link":"https:\/\/laoitdev.com\/lao\/2023\/3649\/","title":{"rendered":"React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo."},"content":{"rendered":"<p>\u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 React \u0ec0\u0e8a\u0eb4\u0ec8\u0e87\u0ec3\u0e99 Code Todo List \u0e99\u0eb5\u0ec9\u0e88\u0eb0\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e94\u0ec9\u0ea7\u0e8d Hook 4 \u0ea2\u0ec8\u0eb2\u0e87\u0eab\u0ebc\u0eb1\u0e81\u0ec6\u0e97\u0eb5\u0ec8\u0e99\u0eb4\u0e8d\u0ebb\u0ea1<\/p>\n\n\n\n<p id=\"9f18\">\u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 React \u0ec0\u0e8a\u0eb4\u0ec8\u0e87\u0ec3\u0e99 Code Todo List \u0e99\u0eb5\u0ec9\u0e88\u0eb0\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e94\u0ec9\u0ea7\u0e8d Hook 4 \u0ea2\u0ec8\u0eb2\u0e87\u0eab\u0ebc\u0eb1\u0e81\u0ec6\u0e97\u0eb5\u0ec8\u0e99\u0eb4\u0e8d\u0ebb\u0ea1\u0ec3\u0e8a\u0ec9\u0e81\u0eb1\u0e99\u0ec3\u0e99\u0e9d\u0eb1\u0e87 Front End Develop \u0ea1\u0eb5\u0e94\u0eb1\u0ec8\u0e87\u0e99\u0eb5\u0ec9:<\/p>\n\n\n\n<p><strong>useState<\/strong><\/p>\n\n\n\n<p id=\"7b34\">useState \u0e96\u0eb7\u0e81\u0e99\u0ecd\u0eb2\u0ec3\u0e8a\u0ec9\u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0eaa\u0ec9\u0eb2\u0e87\u0e95\u0ebb\u0ea7\u0ec1\u0e9b\u0e82\u0ead\u0e87\u0eaa\u0eb0\u0e96\u0eb2\u0e99\u0eb0\u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0ec0\u0e81\u0eb1\u0e9a\u0ea5\u0eb2\u0e8d\u0e81\u0eb2\u0e99\u0eaa\u0eb4\u0ec8\u0e87\u0e97\u0eb5\u0ec8\u0e95\u0ec9\u0ead\u0e87\u0ec0\u0eae\u0eb1\u0e94, \u0e84\u0ec8\u0eb2\u0e81\u0eb2\u0e99\u0e9b\u0ec9\u0ead\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99 \u0ec1\u0ea5\u0eb0 \u0ea5\u0eb2\u0e8d\u0e81\u0eb2\u0e99\u0e97\u0eb5\u0ec8\u0e96\u0eb7\u0e81\u0e81\u0eb1\u0ec8\u0e99\u0e95\u0ead\u0e87.<\/p>\n\n\n\n<p><strong>useEffect<\/strong><\/p>\n\n\n\n<p id=\"a8cc\">useEffect \u0e96\u0eb7\u0e81\u0e99\u0ecd\u0eb2\u0ec3\u0e8a\u0ec9\u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0ec0\u0ead\u0ebb\u0eb2\u0ea5\u0eb2\u0e8d\u0e81\u0eb2\u0e99 todo \u0e88\u0eb2\u0e81 API \u0e9e\u0eb2\u0e8d\u0e99\u0ead\u0e81\u0ec0\u0ea1\u0eb7\u0ec8\u0ead\u0ead\u0ebb\u0e87\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0ec0\u0e8a\u0eb7\u0ec8\u0ead\u0ea1\u0e95\u0ecd\u0ec8. \u0ea1\u0eb1\u0e99\u0e8d\u0eb1\u0e87\u0e96\u0eb7\u0e81\u0ec3\u0e8a\u0ec9\u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0ead\u0eb1\u0e9a\u0ec0\u0e94\u0e94\u0ea5\u0eb2\u0e8d\u0e81\u0eb2\u0e99 todo \u0e97\u0eb5\u0ec8\u0e96\u0eb7\u0e81\u0e81\u0eb1\u0ec8\u0e99\u0e95\u0ead\u0e87\u0e97\u0eb8\u0e81\u0e84\u0eb1\u0ec9\u0e87\u0e97\u0eb5\u0ec8\u0e84\u0ec8\u0eb2\u0e9b\u0ec9\u0ead\u0e99\u0ec0\u0e82\u0ebb\u0ec9\u0eb2\u0ea1\u0eb5\u0e81\u0eb2\u0e99\u0e9b\u0ec8\u0ebd\u0e99\u0ec1\u0e9b\u0e87.<\/p>\n\n\n\n<p><strong>useCallback<\/strong><\/p>\n\n\n\n<p id=\"1094\">useCallback \u0e96\u0eb7\u0e81\u0e99\u0ecd\u0eb2\u0ec3\u0e8a\u0ec9\u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0e88\u0eb7\u0ec8\u0e88\u0ecd\u0eb2\u0eab\u0e99\u0ec9\u0eb2\u0e97\u0eb5\u0ec8 handleInputChange \u0ec1\u0ea5\u0eb0 handleToggleCompleted \u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0e9a\u0ecd\u0ec8\u0ec3\u0eab\u0ec9\u0e96\u0eb7\u0e81\u0eaa\u0ec9\u0eb2\u0e87\u0ec3\u0eab\u0ea1\u0ec8\u0ec3\u0e99\u0e97\u0eb8\u0e81\u0ec6\u0e81\u0eb2\u0e99\u0eaa\u0eb0\u0ec1\u0e94\u0e87\u0e9c\u0ebb\u0e99.<\/p>\n\n\n\n<p><strong>useMemo<\/strong><\/p>\n\n\n\n<p id=\"c01c\">useMemo \u0e96\u0eb7\u0e81\u0e99\u0ecd\u0eb2\u0ec3\u0e8a\u0ec9\u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0e88\u0eb7\u0ec8\u0e88\u0ecd\u0eb2\u0e81\u0eb2\u0e99\u0e99\u0eb1\u0e9a\u0e82\u0ead\u0e87\u0ea5\u0eb2\u0e8d\u0e81\u0eb2\u0e99 todo \u0eaa\u0ecd\u0eb2\u0ec0\u0ea5\u0eb1\u0e94\u0ec0\u0e9e\u0eb7\u0ec8\u0ead\u0e9a\u0ecd\u0ec8\u0ec3\u0eab\u0ec9\u0ea1\u0eb1\u0e99 \u0e84\u0eb4\u0e94\u0ec4\u0ea5\u0ec8\u0e84\u0eb7\u0e99\u0ec3\u0eab\u0ea1\u0ec8 \u0ec3\u0e99\u0e97\u0eb8\u0e81\u0e81\u0eb2\u0e99\u0eaa\u0eb0\u0ec0\u0ec0\u0e94\u0e87\u0e9c\u0ebb\u0e99.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import React, { useState, useEffect, useCallback, useMemo } from \"react\";\n\ninterface Todo {\n  id: number;\n  title: string;\n  completed: boolean;\n}\nfunction todo() {\n  const &#91;todos, setTodos] = useState&lt;Todo&#91;]&gt;(&#91;]);\n  const &#91;inputValue, setInputValue] = useState(\"\");\n  const &#91;filteredTodos, setFilteredTodos] = useState&lt;Todo&#91;]&gt;(&#91;]);\n\n  \/\/ useEffect \u0eaa\u0eb3\u0ea5\u0eb1\u0e9a\u0e81\u0eb2\u0e99\u0e94\u0eb6\u0e87\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99 todos \u0e88\u0eb2\u0e81 API \u0ec0\u0ea1\u0eb7\u0ec8\u0ead\u0ec0\u0e8a\u0eb7\u0ec8\u0ead\u0ea1\u0e95\u0ecd\u0ec8(Component)\n  useEffect(() =&gt; {\n    fetch(\"&lt;https:\/\/jsonplaceholder.typicode.com\/todos&gt;\")\n      .then((response) =&gt; response.json())\n      .then((data) =&gt; setTodos(data));\n  }, &#91;]);\n\n  \/\/ useEffect \u0eaa\u0eb3\u0ea5\u0eb1\u0e9a\u0e81\u0eb2\u0e99\u0e81\u0eb1\u0ec8\u0e99\u0e95\u0ead\u0e87\u0ea5\u0eb2\u0e8d\u0e81\u0eb2\u0e99 todos \u0ec2\u0e94\u0e8d\u0ead\u0eb5\u0e87\u0ec3\u0eaa\u0ec8\u0e84\u0ec8\u0eb2\u0e81\u0eb2\u0e99\u0e9b\u0ec9\u0ead\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\n  useEffect(() =&gt; {\n    setFilteredTodos(\n      todos.filter((todo) =&gt; {\n        return todo.title.toLowerCase().includes(inputValue.toLowerCase());\n      })\n    );\n  }, &#91;inputValue, todos]);\n\n \/\/ handleInputChange =&gt; \u0ec0\u0ec0\u0e81\u0ec9\u0ec4\u0e82\u0e84\u0ec8\u0eb2\u0e81\u0eb2\u0e99\u0e9b\u0ec9\u0ead\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0ec0\u0ea1\u0eb7\u0ec8\u0ead\u0e9c\u0eb9\u0ec9\u0ec3\u0e8a\u0ec9\u0e9e\u0eb4\u0ea1\u0ec3\u0e99\u0ec1\u0e96\u0e9a\u0e84\u0ebb\u0ec9\u0e99\u0eab\u0eb2\n  const handleInputChange = useCallback(\n    (event: React.ChangeEvent&lt;HTMLInputElement&gt;) =&gt; {\n      setInputValue(event.target.value);\n    },\n    &#91;]\n  );\n\n  \/\/handleToggleCompleted =&gt; toggle \u0edd\u0eb2\u0e8d\u0e95\u0eb4\u0e81 \u0eaa\u0eb0\u0e96\u0eb2\u0e99\u0eb0\u0e97\u0eb5\u0ec8\u0eaa\u0eb3\u0ec0\u0ea5\u0eb1\u0e94\u0ec1\u0ea5\u0ec9\u0ea7\u0e82\u0ead\u0e87\u0eaa\u0eb4\u0ec8\u0e87\u0e97\u0eb5\u0ec8\u0e95\u0ec9\u0ead\u0e87\u0ec0\u0eae\u0eb1\u0e94\n  const handleToggleCompleted = useCallback((id: number) =&gt; {\n    setTodos((prevTodos) =&gt;\n      prevTodos.map((todo) =&gt; {\n        if (todo.id === id) {\n          return { ...todo, completed: !todo.completed };\n        }\n        return todo;\n      })\n    );\n  }, &#91;]);\n\n  \/\/ \u0e88\u0eb7\u0ec8\u0e88\u0ecd\u0eb2\u0e88\u0ecd\u0eb2\u0e99\u0ea7\u0e99\u0eaa\u0eb4\u0ec8\u0e87\u0e97\u0eb5\u0ec8\u0e95\u0ec9\u0ead\u0e87\u0ec3\u0eab\u0ec9\u0eaa\u0ecd\u0eb2\u0ec0\u0ea5\u0eb1\u0e94\n  const completedTodosCount = useMemo(() =&gt; {\n    console.log(\"=&gt; Calculating completed todos count...\");\n    return todos.filter((todo) =&gt; todo.completed).length;\n  }, &#91;todos]);\n \n  \/\/ \u0eaa\u0ec8\u0ea7\u0e99\u0e99\u0eb5\u0ec9\u0e88\u0eb0\u0ec0\u0e9b\u0eb1\u0e99\u0eaa\u0ec8\u0ea7\u0e99\u0e82\u0ead\u0e87 UI\n  return (\n    &lt;div&gt;\n      &lt;h1&gt;Todo List&lt;\/h1&gt;\n\n   {\/* 1. \u0e81\u0eb2\u0e99\u0e9b\u0ec9\u0ead\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99\u0e81\u0eb2\u0e99\u0e8a\u0ead\u0e81\u0eab\u0eb2 *\/}\n      &lt;div&gt;\n        &lt;label htmlFor=\"search\"&gt;Search:&lt;\/label&gt;\n        &lt;input\n          id=\"search\"\n          type=\"text\"\n          value={inputValue}\n          onChange={handleInputChange}\n        \/&gt;\n      &lt;\/div&gt;\n\n   {\/* 2. \u0e88\u0ecd\u0eb2\u0e99\u0ea7\u0e99\u0ea5\u0eb2\u0e8d\u0e81\u0eb2\u0e99\u0e97\u0eb5\u0ec8\u0e95\u0ec9\u0ead\u0e87\u0ec0\u0eae\u0eb1\u0e94\u0eaa\u0ecd\u0eb2\u0ec0\u0ea5\u0eb1\u0e94 *\/}\n      &lt;p&gt;Completed todos: {completedTodosCount}&lt;\/p&gt;\n\n   {\/* 3. \u0ea5\u0eb2\u0e8d\u0e81\u0eb2\u0e99\u0e97\u0eb5\u0ec8\u0e95\u0ec9\u0ead\u0e87\u0ec0\u0eae\u0eb1\u0e94 \u0ec4\u0e94\u0ec9\u0e96\u0eb7\u0e81\u0e81\u0eb1\u0ec8\u0e99\u0e95\u0ead\u0e87\u0ec2\u0e94\u0e8d\u0ead\u0eb5\u0e87\u0ec3\u0eaa\u0ec8\u0ea1\u0eb9\u0e99\u0e84\u0ec8\u0eb2\u0e81\u0eb2\u0e99\u0e9b\u0ec9\u0ead\u0e99\u0e82\u0ecd\u0ec9\u0ea1\u0eb9\u0e99 \u0ec1\u0ea5\u0eb0 \n      \u0eaa\u0eb2\u0ea1\u0eb2\u0e94\u0eaa\u0eb0\u0eab\u0ebc\u0eb1\u0e9a\u0ea5\u0eb0\u0eab\u0ea7\u0ec8\u0eb2\u0e87\u0eaa\u0ecd\u0eb2\u0ec0\u0ea5\u0eb1\u0e94 \u0ec1\u0ea5\u0eb0 \u0e9a\u0ecd\u0ec8\u0eaa\u0ecd\u0eb2\u0ec0\u0ea5\u0eb1\u0e94\u0ec2\u0e94\u0e8d\u0e81\u0eb2\u0e99\u0e84\u0ea5\u0eb4\u0e81\u0ec3\u0eaa\u0ec8\u0e81\u0ec8\u0ead\u0e87\u0e81\u0eb2\u0ec0\u0e84\u0eb7\u0ec8\u0ead\u0e87\u0eab\u0ea1\u0eb2\u0e8d Toggle\n      *\/}\n      &lt;div&gt;\n        {filteredTodos.map((todo) =&gt; (\n          &lt;li key={todo.id}&gt;\n            &lt;input\n              type=\"checkbox\"\n              checked={todo.completed}\n              onChange={() =&gt; handleToggleCompleted(todo.id)}\n            \/&gt;\n            &lt;span&gt;{todo.title}&lt;\/span&gt;\n          &lt;\/li&gt;\n        ))}\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  );\n}\nexport default todo;<\/code><\/pre>\n\n\n\n<p>\u0e95\u0ebb\u0ea7\u0ea2\u0ec8\u0eb2\u0e87 Code<\/p>\n\n\n\n<p><a href=\"https:\/\/codesandbox.io\/\">https:\/\/codesandbox.io\/<\/a><\/p>\n\n\n\n<p>\u0e82\u0ebd\u0e99\u0ec2\u0e94\u0e8d: <a href=\"https:\/\/medium.com\/@souliya.litd?source=post_page-----3650e449d95d--------------------------------\">Souliya<\/a><\/p>\n\n\n\n<p>Support by: <a href=\"https:\/\/laoitdev.com\/lao\/\" data-type=\"URL\" data-id=\"https:\/\/laoitdev.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">LAOITDEV<\/a><\/p>\n\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>\u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 React \u0ec0\u0e8a\u0eb4\u0ec8\u0e87\u0ec3\u0e99 Code Todo List \u0e99\u0eb5\u0ec9\u0e88\u0eb0\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e94\u0ec9\u0ea7\u0e8d Hook 4 \u0ea2\u0ec8\u0eb2\u0e87\u0eab\u0ebc\u0eb1\u0e81\u0ec6\u0e97\u0eb5\u0ec8\u0e99\u0eb4\u0e8d\u0ebb\u0ea1 \u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature &#8230; <a class=\"cz_readmore\" href=\"https:\/\/laoitdev.com\/lao\/2023\/3649\/\"><i class=\"fa fa-angle-right\"><\/i><span>\u0ead\u0ec8\u0eb2\u0e99\u0ec0\u0e9e\u0eb5\u0ec8\u0ea1\u0ec0\u0e95\u0eb5\u0ea1<\/span><\/a><\/p>","protected":false},"author":6,"featured_media":3650,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-3649","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo. - Lao IT Dev<\/title>\n<meta name=\"description\" content=\"\u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 React \u0ec0\u0e8a\u0eb4\u0ec8\u0e87\u0ec3\u0e99 Code Todo List \u0e99\u0eb5\u0ec9\u0e88\u0eb0\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e94\u0ec9\u0ea7\u0e8d Hook 4 \u0ea2\u0ec8\u0eb2\u0e87\u0eab\u0ebc\u0eb1\u0e81\u0ec6\u0e97\u0eb5\u0ec8\u0e99\u0eb4\u0e8d\u0ebb\u0ea1 \u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 Lao IT Dev React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo. Domestic and international ICT services, consultants, Mobile app, Web development, application development, Blockchain, AI and Cryptocurrency\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/laoitdev.com\/lao\/2023\/3649\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo. - Lao IT Dev\" \/>\n<meta property=\"og:description\" content=\"\u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 React \u0ec0\u0e8a\u0eb4\u0ec8\u0e87\u0ec3\u0e99 Code Todo List \u0e99\u0eb5\u0ec9\u0e88\u0eb0\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e94\u0ec9\u0ea7\u0e8d Hook 4 \u0ea2\u0ec8\u0eb2\u0e87\u0eab\u0ebc\u0eb1\u0e81\u0ec6\u0e97\u0eb5\u0ec8\u0e99\u0eb4\u0e8d\u0ebb\u0ea1 \u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 Lao IT Dev React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo. Domestic and international ICT services, consultants, Mobile app, Web development, application development, Blockchain, AI and Cryptocurrency\" \/>\n<meta property=\"og:url\" content=\"https:\/\/laoitdev.com\/lao\/2023\/3649\/\" \/>\n<meta property=\"og:site_name\" content=\"Lao IT Dev\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-22T15:29:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-07T13:56:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/laoitdev.com\/wp-content\/uploads\/2023\/04\/3-1.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"828\" \/>\n\t<meta property=\"og:image:height\" content=\"552\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"tokky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0e82\u0ebd\u0e99\u0ec2\u0e94\u0e8d\" \/>\n\t<meta name=\"twitter:data1\" content=\"tokky\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u0ec0\u0ea7\u0ea5\u0eb2\u0ead\u0ec8\u0eb2\u0e99\u0ec2\u0e94\u0e8d\u0e9b\u0eb0\u0ea1\u0eb2\u0e99\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 \u0e99\u0eb2\u0e97\u0eb5\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\\\/\\\/laoitdev.com\\\/2023\\\/3649\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/laoitdev.com\\\/2023\\\/3649\\\/\"},\"author\":{\"name\":\"tokky\",\"@id\":\"https:\\\/\\\/laoitdev.com\\\/#\\\/schema\\\/person\\\/62c6bcfc84b462debc10fa03342f78bf\"},\"headline\":\"React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo.\",\"datePublished\":\"2023-03-22T15:29:00+00:00\",\"dateModified\":\"2024-02-07T13:56:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/laoitdev.com\\\/2023\\\/3649\\\/\"},\"wordCount\":48,\"publisher\":{\"@id\":\"https:\\\/\\\/laoitdev.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/laoitdev.com\\\/2023\\\/3649\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/laoitdev.com\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/3-1.webp\",\"articleSection\":[\"News\"],\"inLanguage\":\"lo\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/laoitdev.com\\\/2023\\\/3649\\\/\",\"url\":\"https:\\\/\\\/laoitdev.com\\\/2023\\\/3649\\\/\",\"name\":\"React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo. - Lao IT Dev\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/laoitdev.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/laoitdev.com\\\/2023\\\/3649\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/laoitdev.com\\\/2023\\\/3649\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/laoitdev.com\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/3-1.webp\",\"datePublished\":\"2023-03-22T15:29:00+00:00\",\"dateModified\":\"2024-02-07T13:56:53+00:00\",\"description\":\"\u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 React \u0ec0\u0e8a\u0eb4\u0ec8\u0e87\u0ec3\u0e99 Code Todo List \u0e99\u0eb5\u0ec9\u0e88\u0eb0\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e94\u0ec9\u0ea7\u0e8d Hook 4 \u0ea2\u0ec8\u0eb2\u0e87\u0eab\u0ebc\u0eb1\u0e81\u0ec6\u0e97\u0eb5\u0ec8\u0e99\u0eb4\u0e8d\u0ebb\u0ea1 \u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 Lao IT Dev React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo. Domestic and international ICT services, consultants, Mobile app, Web development, application development, Blockchain, AI and Cryptocurrency\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/laoitdev.com\\\/2023\\\/3649\\\/#breadcrumb\"},\"inLanguage\":\"lo\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/laoitdev.com\\\/2023\\\/3649\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"lo\",\"@id\":\"https:\\\/\\\/laoitdev.com\\\/2023\\\/3649\\\/#primaryimage\",\"url\":\"https:\\\/\\\/laoitdev.com\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/3-1.webp\",\"contentUrl\":\"https:\\\/\\\/laoitdev.com\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/3-1.webp\",\"width\":828,\"height\":552},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/laoitdev.com\\\/2023\\\/3649\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/laoitdev.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/laoitdev.com\\\/#website\",\"url\":\"https:\\\/\\\/laoitdev.com\\\/\",\"name\":\"Lao IT Dev - Lao ICT Solutions Group\",\"description\":\"LAOITDEV\",\"publisher\":{\"@id\":\"https:\\\/\\\/laoitdev.com\\\/#organization\"},\"alternateName\":\"Domestic and international ICT services, consultants, Mobile app, Web development, application development, Blockchain, AI and Cryptocurrency\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/laoitdev.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"lo\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/laoitdev.com\\\/#organization\",\"name\":\"Lao IT Dev Co., Ltd.\",\"url\":\"https:\\\/\\\/laoitdev.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"lo\",\"@id\":\"https:\\\/\\\/laoitdev.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/laoitdev.com\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/Default-feature-image.jpg\",\"contentUrl\":\"https:\\\/\\\/laoitdev.com\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/Default-feature-image.jpg\",\"width\":800,\"height\":600,\"caption\":\"Lao IT Dev Co., Ltd.\"},\"image\":{\"@id\":\"https:\\\/\\\/laoitdev.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/laoitdev.com\\\/#\\\/schema\\\/person\\\/62c6bcfc84b462debc10fa03342f78bf\",\"name\":\"tokky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"lo\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/27a02a239b23482f31f7926e9d4fcc9213d6ec730a49849035affbfd90580ab0?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/27a02a239b23482f31f7926e9d4fcc9213d6ec730a49849035affbfd90580ab0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/27a02a239b23482f31f7926e9d4fcc9213d6ec730a49849035affbfd90580ab0?s=96&d=mm&r=g\",\"caption\":\"tokky\"},\"url\":\"https:\\\/\\\/laoitdev.com\\\/lao\\\/author\\\/tokky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo. - Lao IT Dev","description":"\u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 React \u0ec0\u0e8a\u0eb4\u0ec8\u0e87\u0ec3\u0e99 Code Todo List \u0e99\u0eb5\u0ec9\u0e88\u0eb0\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e94\u0ec9\u0ea7\u0e8d Hook 4 \u0ea2\u0ec8\u0eb2\u0e87\u0eab\u0ebc\u0eb1\u0e81\u0ec6\u0e97\u0eb5\u0ec8\u0e99\u0eb4\u0e8d\u0ebb\u0ea1 \u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 Lao IT Dev React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo. Domestic and international ICT services, consultants, Mobile app, Web development, application development, Blockchain, AI and Cryptocurrency","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/laoitdev.com\/lao\/2023\/3649\/","og_locale":"en_US","og_type":"article","og_title":"React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo. - Lao IT Dev","og_description":"\u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 React \u0ec0\u0e8a\u0eb4\u0ec8\u0e87\u0ec3\u0e99 Code Todo List \u0e99\u0eb5\u0ec9\u0e88\u0eb0\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e94\u0ec9\u0ea7\u0e8d Hook 4 \u0ea2\u0ec8\u0eb2\u0e87\u0eab\u0ebc\u0eb1\u0e81\u0ec6\u0e97\u0eb5\u0ec8\u0e99\u0eb4\u0e8d\u0ebb\u0ea1 \u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 Lao IT Dev React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo. Domestic and international ICT services, consultants, Mobile app, Web development, application development, Blockchain, AI and Cryptocurrency","og_url":"https:\/\/laoitdev.com\/lao\/2023\/3649\/","og_site_name":"Lao IT Dev","article_published_time":"2023-03-22T15:29:00+00:00","article_modified_time":"2024-02-07T13:56:53+00:00","og_image":[{"width":828,"height":552,"url":"https:\/\/laoitdev.com\/wp-content\/uploads\/2023\/04\/3-1.webp","type":"image\/webp"}],"author":"tokky","twitter_card":"summary_large_image","twitter_misc":{"\u0e82\u0ebd\u0e99\u0ec2\u0e94\u0e8d":"tokky","\u0ec0\u0ea7\u0ea5\u0eb2\u0ead\u0ec8\u0eb2\u0e99\u0ec2\u0e94\u0e8d\u0e9b\u0eb0\u0ea1\u0eb2\u0e99":"2 \u0e99\u0eb2\u0e97\u0eb5"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/laoitdev.com\/2023\/3649\/#article","isPartOf":{"@id":"https:\/\/laoitdev.com\/2023\/3649\/"},"author":{"name":"tokky","@id":"https:\/\/laoitdev.com\/#\/schema\/person\/62c6bcfc84b462debc10fa03342f78bf"},"headline":"React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo.","datePublished":"2023-03-22T15:29:00+00:00","dateModified":"2024-02-07T13:56:53+00:00","mainEntityOfPage":{"@id":"https:\/\/laoitdev.com\/2023\/3649\/"},"wordCount":48,"publisher":{"@id":"https:\/\/laoitdev.com\/#organization"},"image":{"@id":"https:\/\/laoitdev.com\/2023\/3649\/#primaryimage"},"thumbnailUrl":"https:\/\/laoitdev.com\/wp-content\/uploads\/2023\/04\/3-1.webp","articleSection":["News"],"inLanguage":"lo"},{"@type":"WebPage","@id":"https:\/\/laoitdev.com\/2023\/3649\/","url":"https:\/\/laoitdev.com\/2023\/3649\/","name":"React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo. - Lao IT Dev","isPartOf":{"@id":"https:\/\/laoitdev.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/laoitdev.com\/2023\/3649\/#primaryimage"},"image":{"@id":"https:\/\/laoitdev.com\/2023\/3649\/#primaryimage"},"thumbnailUrl":"https:\/\/laoitdev.com\/wp-content\/uploads\/2023\/04\/3-1.webp","datePublished":"2023-03-22T15:29:00+00:00","dateModified":"2024-02-07T13:56:53+00:00","description":"\u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 React \u0ec0\u0e8a\u0eb4\u0ec8\u0e87\u0ec3\u0e99 Code Todo List \u0e99\u0eb5\u0ec9\u0e88\u0eb0\u0e9b\u0eb0\u0e81\u0ead\u0e9a\u0e94\u0ec9\u0ea7\u0e8d Hook 4 \u0ea2\u0ec8\u0eb2\u0e87\u0eab\u0ebc\u0eb1\u0e81\u0ec6\u0e97\u0eb5\u0ec8\u0e99\u0eb4\u0e8d\u0ebb\u0ea1 \u0ec3\u0e99\u0e81\u0eb2\u0e99\u0e99\u0eb3\u0ec3\u0e8a\u0ec9 React Hook \u0e97\u0eb5\u0ec8\u0ec0\u0e9b\u0eb1\u0e99 Feature \u0e82\u0ead\u0e87 Lao IT Dev React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo. Domestic and international ICT services, consultants, Mobile app, Web development, application development, Blockchain, AI and Cryptocurrency","breadcrumb":{"@id":"https:\/\/laoitdev.com\/2023\/3649\/#breadcrumb"},"inLanguage":"lo","potentialAction":[{"@type":"ReadAction","target":["https:\/\/laoitdev.com\/2023\/3649\/"]}]},{"@type":"ImageObject","inLanguage":"lo","@id":"https:\/\/laoitdev.com\/2023\/3649\/#primaryimage","url":"https:\/\/laoitdev.com\/wp-content\/uploads\/2023\/04\/3-1.webp","contentUrl":"https:\/\/laoitdev.com\/wp-content\/uploads\/2023\/04\/3-1.webp","width":828,"height":552},{"@type":"BreadcrumbList","@id":"https:\/\/laoitdev.com\/2023\/3649\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/laoitdev.com\/"},{"@type":"ListItem","position":2,"name":"React Hooks\u00a0useState,\u00a0useEffect,\u00a0useCallback, and\u00a0useMemo."}]},{"@type":"WebSite","@id":"https:\/\/laoitdev.com\/#website","url":"https:\/\/laoitdev.com\/","name":"Lao IT Dev - Lao ICT Solutions Group","description":"LAOITDEV","publisher":{"@id":"https:\/\/laoitdev.com\/#organization"},"alternateName":"Domestic and international ICT services, consultants, Mobile app, Web development, application development, Blockchain, AI and Cryptocurrency","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/laoitdev.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"lo"},{"@type":"Organization","@id":"https:\/\/laoitdev.com\/#organization","name":"Lao IT Dev Co., Ltd.","url":"https:\/\/laoitdev.com\/","logo":{"@type":"ImageObject","inLanguage":"lo","@id":"https:\/\/laoitdev.com\/#\/schema\/logo\/image\/","url":"https:\/\/laoitdev.com\/wp-content\/uploads\/2021\/08\/Default-feature-image.jpg","contentUrl":"https:\/\/laoitdev.com\/wp-content\/uploads\/2021\/08\/Default-feature-image.jpg","width":800,"height":600,"caption":"Lao IT Dev Co., Ltd."},"image":{"@id":"https:\/\/laoitdev.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/laoitdev.com\/#\/schema\/person\/62c6bcfc84b462debc10fa03342f78bf","name":"tokky","image":{"@type":"ImageObject","inLanguage":"lo","@id":"https:\/\/secure.gravatar.com\/avatar\/27a02a239b23482f31f7926e9d4fcc9213d6ec730a49849035affbfd90580ab0?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/27a02a239b23482f31f7926e9d4fcc9213d6ec730a49849035affbfd90580ab0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/27a02a239b23482f31f7926e9d4fcc9213d6ec730a49849035affbfd90580ab0?s=96&d=mm&r=g","caption":"tokky"},"url":"https:\/\/laoitdev.com\/lao\/author\/tokky\/"}]}},"_links":{"self":[{"href":"https:\/\/laoitdev.com\/lao\/wp-json\/wp\/v2\/posts\/3649","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/laoitdev.com\/lao\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/laoitdev.com\/lao\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/laoitdev.com\/lao\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/laoitdev.com\/lao\/wp-json\/wp\/v2\/comments?post=3649"}],"version-history":[{"count":3,"href":"https:\/\/laoitdev.com\/lao\/wp-json\/wp\/v2\/posts\/3649\/revisions"}],"predecessor-version":[{"id":3654,"href":"https:\/\/laoitdev.com\/lao\/wp-json\/wp\/v2\/posts\/3649\/revisions\/3654"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/laoitdev.com\/lao\/wp-json\/wp\/v2\/media\/3650"}],"wp:attachment":[{"href":"https:\/\/laoitdev.com\/lao\/wp-json\/wp\/v2\/media?parent=3649"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/laoitdev.com\/lao\/wp-json\/wp\/v2\/categories?post=3649"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/laoitdev.com\/lao\/wp-json\/wp\/v2\/tags?post=3649"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}