{"id":3528,"date":"2022-11-09T09:12:08","date_gmt":"2022-11-09T09:12:08","guid":{"rendered":"https:\/\/texnokun.uz\/?p=3528"},"modified":"2023-01-27T05:22:18","modified_gmt":"2023-01-27T05:22:18","slug":"react-va-websockets-bilan-eng-qulay-ishlar-jadvalini-yaratish","status":"publish","type":"post","link":"https:\/\/texnokun.uz\/?p=3528","title":{"rendered":"React va Websockets bilan ENG qulay ishlar jadvalini yaratish"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Ushbu maqola nima haqida?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ushbu maqolada siz <strong>React.js<\/strong> va<strong> Socket.io<\/strong>-dan foydalanib jamoaviy ishlar ro&#8217;yxatini qanday yaratishni o&#8217;rganasiz. Foydalanuvchilar Socket.io orqali ishlarni yaratish, o\u2018qish va o\u2018chirish, shuningdek, har bir ishga izoh qo\u2018shish imkoniyatiga ega bo\u2018ladi. Vazifalar yaratilganda yoki o\u02bbchirilganda, ilova bildirishnoma jo\u2019natadigan qilishni ham o\u02bbrganasiz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Novu &#8211; birinchi ochiq manbali bildirishnoma (<strong>notification<\/strong>) tizimi.<\/p>\n\n\n\n<p class=\"has-green-background-color has-background wp-block-paragraph\"><strong>Novu<\/strong> \u2013 bu birinchi ochiq manbali bildirishnoma (elektron pochta, SMS va boshqalar) tizimidir. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"877\" height=\"480\" src=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image.png\" alt=\"\" class=\"wp-image-3529\" srcset=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image.png 877w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-300x164.png 300w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-768x420.png 768w\" sizes=\"auto, (max-width: 877px) 100vw, 877px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Socket.io nima?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Socket.io<\/strong> &#8211; bu mashhur JavaScript kutubxonasi bo\u02bblib, u bizga web-brauzerlar va Node.js serveri o\u02bbrtasida bir vaqtda <strong>ikki yo\u02bbnalishli aloqani<\/strong> yaratish imkonini beradi. Bu katta hajmdagi ma\u02bclumotlarni minimal kechikish bilan qayta ishlashga mo\u02bbljallangan yuqori unumdorli va mustahkam kutubxona. U <strong>WebSocket<\/strong> protokoliga amal qiladi va HTTP uzoq so&#8217;rovidan qaytish yoki avtomatik qayta ulanish kabi yaxshi funksionallikni ta&#8217;minlaydi, bu esa o\u2019z o\u2019rnida bizga <strong>real vaqtda<\/strong> samarali ilovalar yaratish imkonini beradi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">React va Socket.io orasida birikmani qanday yaratish mumkin?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bu erda siz ilovani yaratish uchun loyiha muhitini o&#8217;rnatasiz. Shuningdek, siz ilovaga Socket.io ni qanday qo\u2018shishni va Socket.io orqali real vaqt rejimida muloqot qilish uchun React va Node.js serverini ulashni o\u2018rganasiz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Loyiha papkasini yarating. Uning ichida <em>client<\/em> &#8211; ya&#8217;ni mijoz, hamda <em>server<\/em> &#8211; ya&#8217;ni server nomli papkalarni oching.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"mkdir todo-list\ncd todo-list\nmkdir client server\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #81A1C1\">mkdir<\/span><span style=\"color: #D8DEE9FF\"> todo-list<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">cd<\/span><span style=\"color: #D8DEE9FF\"> todo-list<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">mkdir<\/span><span style=\"color: #D8DEE9FF\"> client server<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Terminal orqali <em>client <\/em>papkasiga o&#8217;ting va yangi React.js loyihasini yarating.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"cd client\nnpx create-react-app .\/\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #81A1C1\">cd<\/span><span style=\"color: #D8DEE9FF\"> client<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">npx create-react-app .\/<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Socket.io kengaytmasini va Rea\u0441t Routerni o\u2018rnating. React Router &#8211; bu JavaScript kutubxonasi bo\u2018lib, u bizga React ilovasidagi sahifalar orasida harakat qilish imkonini beradi.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"npm install socket.io-client react-router-dom\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">npm install socket.io-client react-router-dom<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">React ilovasidan logotip va test fayllari kabi ortiqcha fayllarni o\u2019chirib tashlang va App.js faylini quyida ko\u2018rsatilganidek <em>Hello<\/em> <em>World<\/em> ko\u2018rsatishi uchun yangilang.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"function App() {\n    return (\n        <div&gt;\n            <p&gt;Hello World!<\/p&gt;\n        <\/div&gt;\n    );\n}\nexport default App;\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #81A1C1\">function<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">App<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">&lt;div&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">&lt;p&gt;<\/span><span style=\"color: #D8DEE9FF\">Hello World!<\/span><span style=\"color: #81A1C1\">&lt;\/p&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">&lt;\/div&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    )<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">export<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">default<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #81A1C1\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Server papkasiga o&#8217;ting va <em>package<\/em>.<em>json<\/em> faylini yarating.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"cd server &amp; npm init \u2013y\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #81A1C1\">cd<\/span><span style=\"color: #D8DEE9FF\"> server <\/span><span style=\"color: #81A1C1\">&amp;<\/span><span style=\"color: #D8DEE9FF\"> npm init \u2013y<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Express.js, CORS, Nodemon va Socket.io Server API-sini o&#8217;rnating.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Express.js<\/strong> \u2013 Node.js ni tez, oddiy kutubxonasi bo&#8217;lib, unda web-ilovalarini yaratish uchun bir nechta xususiyatlarni taqdim etadi. CORS &#8211; bu turli domenlar o&#8217;rtasidagi aloqani ta&#8217;minlaydigan Node.js to&#8217;plami.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Nodemon<\/strong> &#8211; Node.js vositasi bo\u02bblib, fayllarni o\u02bbzgarishini aniqlagandan so\u02bbng serverni avtomatik ravishda qayta ishga tushiradi, Socket.io esa serverda real vaqtda ulanishni o\u02bbrnatish imkonini beradi.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"npm install express cors nodemon socket.io\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">npm install express cors nodemon socket.io<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Serverga kirish nuqtasini, <em>index<\/em>.<em>js<\/em> faylini yarating.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"touch index.js\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">touch index.js<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Express.js bilan oddiy Node.js serverini sozlang. Quyidagi kod parchasi brauzerda http:\/\/localhost:4000\/api ga tashrif buyurilganida JSON obyektini qaytaradi.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/index.js\nconst express = require(&quot;express&quot;);\nconst app = express();\nconst PORT = 4000;\n\napp.use(express.urlencoded({ extended: true }));\napp.use(express.json());\n\napp.get(&quot;\/api&quot;, (req, res) =&gt; {\n    res.json({\n        message: &quot;Hello world&quot;,\n    });\n});\n\napp.listen(PORT, () =&gt; {\n    console.log(`Server listening on ${PORT}`);\n});\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #616E88\">\/\/index.js<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">const<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">express<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">require<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">express<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">const<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">express<\/span><span style=\"color: #D8DEE9FF\">()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">const<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PORT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">4000<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">use<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">express<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">urlencoded<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">extended<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">true<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">))<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">use<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">express<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">json<\/span><span style=\"color: #D8DEE9FF\">())<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">get<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">\/api<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">req<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">res<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">res<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">json<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">message<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Hello world<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">listen<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">PORT<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">console<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">log<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">`<\/span><span style=\"color: #A3BE8C\">Server listening on <\/span><span style=\"color: #81A1C1\">${<\/span><span style=\"color: #D8DEE9\">PORT<\/span><span style=\"color: #81A1C1\">}<\/span><span style=\"color: #ECEFF4\">`<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Mijoz va server domenlari o&#8217;rtasidagi aloqani yoqish uchun HTTP va CORS kutubxonasini import qiling.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"const express = require(&quot;express&quot;);\nconst app = express();\nconst PORT = 4000;\n\napp.use(express.urlencoded({ extended: true }));\napp.use(express.json());\n\n\/\/ Yangi importlar\nconst http = require(&quot;http&quot;).Server(app);\nconst cors = require(&quot;cors&quot;);\n\napp.use(cors());\n\napp.get(&quot;\/api&quot;, (req, res) =&gt; {\n    res.json({\n        message: &quot;Hello world&quot;,\n    });\n});\n\nhttp.listen(PORT, () =&gt; {\n    console.log(`Server listening on ${PORT}`);\n});\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">express<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">require<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;express&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">app<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">express<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">PORT<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #B5CEA8\">4000<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">app<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">use<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">express<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">urlencoded<\/span><span style=\"color: #D4D4D4\">({ <\/span><span style=\"color: #9CDCFE\">extended:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\"> }));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">app<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">use<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">express<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">json<\/span><span style=\"color: #D4D4D4\">());<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Yangi importlar<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">http<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">require<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;http&quot;<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #DCDCAA\">Server<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">app<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">cors<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">require<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;cors&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">app<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">use<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">cors<\/span><span style=\"color: #D4D4D4\">());<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">app<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">get<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;\/api&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">req<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">res<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">res<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">json<\/span><span style=\"color: #D4D4D4\">({<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">message:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;Hello world&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">http<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">listen<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #4FC1FF\">PORT<\/span><span style=\"color: #D4D4D4\">, () <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">`Server listening on <\/span><span style=\"color: #569CD6\">${<\/span><span style=\"color: #4FC1FF\">PORT<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">`<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Keyin real vaqtda ulanishni yaratish uchun loyihaga Socket.io ni qo&#8217;shing. app.get() blokidan oldin quyidagi kodni nusxalang.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Yangi importlar\n.....\nconst socketIO = require('socket.io')(http, {\n    cors: {\n        origin: &quot;http:\/\/localhost:3000&quot;\n    }\n});\n\n\/\/ Buni app.get() blokidan oldin qo\u2019ying\nsocketIO.on('connection', (socket) =&gt; {\n    console.log(`\u26a1: ${socket.id} user just connected!`);\n\n    socket.on('disconnect', () =&gt; {\n      socket.disconnect()\n      console.log('\ud83d\udd25: A user disconnected');\n    });\n});\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Yangi importlar<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">.....<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">socketIO<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">require<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;socket.io&#39;<\/span><span style=\"color: #D4D4D4\">)(<\/span><span style=\"color: #9CDCFE\">http<\/span><span style=\"color: #D4D4D4\">, {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">cors:<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">origin:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;http:\/\/localhost:3000&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Buni app.get() blokidan oldin qo\u2019ying<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">socketIO<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;connection&#39;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">`\u26a1: <\/span><span style=\"color: #569CD6\">${<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> user just connected!`<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;disconnect&#39;<\/span><span style=\"color: #D4D4D4\">, () <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">disconnect<\/span><span style=\"color: #D4D4D4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;\ud83d\udd25: A user disconnected&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Yuqorida keltirilgan kod blokidagi socket.io(\u201cconnection\u201d) funksiyasi React dasturi bilan birikmani o\u2019rnatadi, keyin har bir kirgan kishi uchun noyob ID yaratadi va har safar foydalanuvchi web-sahifaga kirganda, IDni konsolga yozadi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Web-sahifani yangilaganingizda yoki yopganingizda, foydalanuvchi chiqib ketganligini bildiradigan hodisasini ishga tushiradi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Package.json faylidagi skriptlar ro&#8217;yxatiga start buyrug&#8217;ini qo&#8217;shish orqali Nodemonni sozlang. Quyidagi kod parchasi Nodemon yordamida serverni ishga tushiradi.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/  server\/package.json ichida\n\n&quot;scripts&quot;: {\n    &quot;test&quot;: &quot;echo \\&quot;Error: no test specified\\&quot; &amp;&amp; exit 1&quot;,\n    &quot;start&quot;: &quot;nodemon index.js&quot;\n  },\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/  server\/package.json ichida<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #CE9178\">&quot;scripts&quot;<\/span><span style=\"color: #D4D4D4\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">&quot;test&quot;<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">&quot;echo <\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">Error: no test specified<\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\"> &amp;&amp; exit 1&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">&quot;start&quot;<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">&quot;nodemon index.js&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  },<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSON<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Endi siz quyidagi buyruq yordamida serverni Nodemon bilan ishga tushirishingiz mumkin.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"npm start\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">npm <\/span><span style=\"color: #569CD6\">start<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">BAT<\/span><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Foydalanuvchi interfeysini yaratish.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bu yerda biz ishlar jadvali ilovasi uchun foydalanuvchi interfeysini yaratamiz. Foydalanuvchilar tizimga kirishlari, ishlarni qo\u2018shishlari va o\u2018chirishlari hamda har bir holatga izoh qo\u2018shishlari mumkin bo\u2018ladi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Client<\/em>\/<em>src<\/em> papkasiga o&#8217;ting va <em>Home<\/em>.<em>js<\/em> hamda <em>Main.js<\/em> fayllarini o&#8217;z ichiga olgan komponentlar papkasini yarating.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"cd client\nmkdir components\ncd components\ntouch Home.js Main.js\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #569CD6\">cd<\/span><span style=\"color: #D4D4D4\"> client<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">mkdir<\/span><span style=\"color: #D4D4D4\"> components<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">cd<\/span><span style=\"color: #D4D4D4\"> components<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">touch Home.js Main.js<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">BAT<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">React Router yordamida yangi yaratilgan komponentlarni turli yo&#8217;nalishlarda ko&#8217;rsatish uchun App.js faylini yangilang.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import React from &quot;react&quot;;\nimport socketIO from &quot;socket.io-client&quot;;\nimport { BrowserRouter, Routes, Route } from &quot;react-router-dom&quot;;\nimport Main from &quot;.\/components\/Main&quot;;\nimport Home from &quot;.\/components\/Home&quot;;\n\nconst socket = socketIO.connect(&quot;http:\/\/localhost:4000&quot;);\n\nconst App = () =&gt; {\n    return (\n        <BrowserRouter&gt;\n            <Routes&gt;\n                <Route path='\/' element={<Home \/&gt;} \/&gt;\n                <Route path='\/app' element={<Main socket={socket} \/&gt;} \/&gt;\n            <\/Routes&gt;\n        <\/BrowserRouter&gt;\n    );\n};\n\nexport default App;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">React<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;react&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">socketIO<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;socket.io-client&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> { <\/span><span style=\"color: #9CDCFE\">BrowserRouter<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">Routes<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">Route<\/span><span style=\"color: #D4D4D4\"> } <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;react-router-dom&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Main<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;.\/components\/Main&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Home<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;.\/components\/Home&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">socket<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">socketIO<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">connect<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;http:\/\/localhost:4000&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">App<\/span><span style=\"color: #D4D4D4\"> = () <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">BrowserRouter<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">Routes<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">Route<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">path<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;\/&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">element<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">Home<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #808080\">\/&gt;<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #808080\">\/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">Route<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">path<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;\/app&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">element<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">Main<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #808080\">\/&gt;<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #808080\">\/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #4EC9B0\">Routes<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #4EC9B0\">BrowserRouter<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">export<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">default<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">App<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><em>src<\/em>\/<em>index.css<\/em> fayliga o&#8217;ting va quyidagi koddan nusxa oling. Unda ushbu loyihani shakllantirish uchun zarur bo&#8217;lgan barcha CSS kodlari mavjud.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"@import url(&quot;https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@300;400;500;600;700&amp;display=swap&quot;);\n* {\n    box-sizing: border-box;\n    margin: 0;\n    padding: 0;\n    font-family: &quot;Space Grotesk&quot;, sans-serif;\n}\n.navbar {\n    width: 100%;\n    height: 10vh;\n    background-color: #256d85;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 0 20px;\n    color: #dff6ff;\n}\n.form {\n    width: 100%;\n    min-height: 20vh;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 0 30px;\n}\n.input {\n    padding: 10px 15px;\n    width: 80%;\n    margin-right: 15px;\n}\n.form__cta,\n.home__form &gt; button {\n    width: 200px;\n    cursor: pointer;\n    padding: 10px;\n    height: 45px;\n    font-size: 16px;\n    background-color: #256d85;\n    color: #dff6ff;\n    border: none;\n    outline: none;\n    border-radius: 3px;\n}\n.todo__container {\n    width: 100%;\n    display: flex;\n    align-items: center;\n    flex-direction: column;\n    min-height: 300px;\n}\n.todo__item {\n    display: flex;\n    align-items: center;\n    width: 70%;\n    padding: 20px;\n    background-color: #ddd;\n    margin: 10px 0;\n    justify-content: space-between;\n    color: #06283d;\n}\n\n.deleteBtn {\n    padding: 5px 10px;\n    background-color: rgb(202, 22, 22);\n    border: none;\n    outline: none;\n    color: #fff;\n    cursor: pointer;\n}\n.deleteBtn:hover {\n    color: rgb(202, 22, 22);\n    background-color: #fff;\n}\n.commentsBtn {\n    padding: 5px 10px;\n    margin-right: 10px;\n    outline: none;\n    cursor: pointer;\n    border: none;\n    background-color: #fff;\n}\n.commentsBtn:hover {\n    background-color: #ddd;\n    border: 1px solid #000;\n}\n.modal {\n    min-height: 100vh;\n    width: 100%;\n    position: fixed;\n    top: 0;\n    background-color: #fff;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n.modal__container {\n    width: 70%;\n    background-color: #fff;\n    min-height: 80vh;\n    padding: 30px;\n    border-radius: 3px;\n    border: 1px solid #333;\n}\n.modal__container &gt; h3 {\n    margin-bottom: 30px;\n}\n.comment__form {\n    display: flex;\n    margin-bottom: 30px;\n    align-items: center;\n}\n.comment__form &gt; input {\n    padding: 10px;\n    border: 1px solid #256d85;\n    width: 70%;\n    margin-right: 20px;\n}\n.comment {\n    margin-bottom: 5px;\n}\n.comment__form &gt; button {\n    padding: 15px 20px;\n    cursor: pointer;\n    background-color: #256d85;\n    color: #fff;\n    outline: none;\n    border: none;\n    height: 45px;\n}\n.home {\n    width: 100%;\n    min-height: 100vh;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n}\n.home__form {\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n}\n.home__form &gt; * {\n    margin-bottom: 10px;\n}\n.home &gt; h2 {\n    margin-bottom: 15px;\n}\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #C586C0\">@import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">url<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@300;400;500;600;700&amp;display=swap&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">*<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">box-sizing<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">border-box<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">margin<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">padding<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">font-family<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">&quot;Space Grotesk&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">sans-serif<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.navbar<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">width<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">100%<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">height<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">10vh<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">background-color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#256d85<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">display<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">flex<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">align-items<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">center<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">justify-content<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">space-between<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">padding<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">20px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#dff6ff<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.form<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">width<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">100%<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">min-height<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">20vh<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">display<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">flex<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">align-items<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">center<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">justify-content<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">center<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">padding<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">30px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.input<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">padding<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">10px<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">15px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">width<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">80%<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">margin-right<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">15px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.form__cta<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.home__form<\/span><span style=\"color: #D4D4D4\"> &gt; <\/span><span style=\"color: #D7BA7D\">button<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">width<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">200px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">cursor<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">pointer<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">padding<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">10px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">height<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">45px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">font-size<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">16px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">background-color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#256d85<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#dff6ff<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">border<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">none<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">outline<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">none<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">border-radius<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">3px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.todo__container<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">width<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">100%<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">display<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">flex<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">align-items<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">center<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">flex-direction<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">column<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">min-height<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">300px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.todo__item<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">display<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">flex<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">align-items<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">center<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">width<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">70%<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">padding<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">20px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">background-color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#ddd<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">margin<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">10px<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">justify-content<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">space-between<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#06283d<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.deleteBtn<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">padding<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">5px<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">10px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">background-color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #DCDCAA\">rgb<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">202<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">22<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">22<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">border<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">none<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">outline<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">none<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#fff<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">cursor<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">pointer<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.deleteBtn:hover<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #DCDCAA\">rgb<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">202<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">22<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">22<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">background-color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#fff<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.commentsBtn<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">padding<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">5px<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">10px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">margin-right<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">10px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">outline<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">none<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">cursor<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">pointer<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">border<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">none<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">background-color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#fff<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.commentsBtn:hover<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">background-color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#ddd<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">border<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">1px<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">solid<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">#000<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.modal<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">min-height<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">100vh<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">width<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">100%<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">position<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">fixed<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">top<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">background-color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#fff<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">display<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">flex<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">align-items<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">center<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">justify-content<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">center<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.modal__container<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">width<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">70%<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">background-color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#fff<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">min-height<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">80vh<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">padding<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">30px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">border-radius<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">3px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">border<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">1px<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">solid<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">#333<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.modal__container<\/span><span style=\"color: #D4D4D4\"> &gt; <\/span><span style=\"color: #D7BA7D\">h3<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">margin-bottom<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">30px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.comment__form<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">display<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">flex<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">margin-bottom<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">30px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">align-items<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">center<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.comment__form<\/span><span style=\"color: #D4D4D4\"> &gt; <\/span><span style=\"color: #D7BA7D\">input<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">padding<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">10px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">border<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">1px<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">solid<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">#256d85<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">width<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">70%<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">margin-right<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">20px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.comment<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">margin-bottom<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">5px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.comment__form<\/span><span style=\"color: #D4D4D4\"> &gt; <\/span><span style=\"color: #D7BA7D\">button<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">padding<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">15px<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">20px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">cursor<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">pointer<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">background-color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#256d85<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#fff<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">outline<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">none<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">border<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">none<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">height<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">45px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.home<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">width<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">100%<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">min-height<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">100vh<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">display<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">flex<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">flex-direction<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">column<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">align-items<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">center<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">justify-content<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">center<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.home__form<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">width<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">100%<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">display<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">flex<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">flex-direction<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">column<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">align-items<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">center<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.home__form<\/span><span style=\"color: #D4D4D4\"> &gt; <\/span><span style=\"color: #569CD6\">*<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">margin-bottom<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">10px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D7BA7D\">.home<\/span><span style=\"color: #D4D4D4\"> &gt; <\/span><span style=\"color: #D7BA7D\">h2<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">margin-bottom<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">15px<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">CSS<\/span><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Bosh sahifa.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bu erda dastur foydalanuvchi nomini qabul qiladi va foydalanuvchini aniqlash uchun uni mahalliy xotirada saqlaydi. Quyidagi kodni <em>Home<\/em> komponentiga nusxalang.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import React, { useState } from &quot;react&quot;;\nimport { useNavigate } from &quot;react-router-dom&quot;;\n\nconst Home = () =&gt; {\n    const [username, setUsername] = useState(&quot;&quot;);\n    const navigate = useNavigate();\n\n    const handleSubmit = (e) =&gt; {\n        e.preventDefault();\n        localStorage.setItem(&quot;_username&quot;, username);\n        \/\/ Ilovaga o'tish\n        navigate(&quot;\/app&quot;);\n    };\n    return (\n        <div className='home'&gt;\n            <h2&gt;Sign in to your todo-list<\/h2&gt;\n            <form onSubmit={handleSubmit} className='home__form'&gt;\n                <label htmlFor='username'&gt;Your Username<\/label&gt;\n                <input\n                    value={username}\n                    required\n                    onChange={(e) =&gt; setUsername(e.target.value)}\n                    className='input'\n                \/&gt;\n                <button&gt;SIGN IN<\/button&gt;\n            <\/form&gt;\n        <\/div&gt;\n    );\n};\n\nexport default Home;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">React<\/span><span style=\"color: #D4D4D4\">, { <\/span><span style=\"color: #9CDCFE\">useState<\/span><span style=\"color: #D4D4D4\"> } <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;react&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> { <\/span><span style=\"color: #9CDCFE\">useNavigate<\/span><span style=\"color: #D4D4D4\"> } <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;react-router-dom&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Home<\/span><span style=\"color: #D4D4D4\"> = () <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">username<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4FC1FF\">setUsername<\/span><span style=\"color: #D4D4D4\">] = <\/span><span style=\"color: #DCDCAA\">useState<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">navigate<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">useNavigate<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">handleSubmit<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">preventDefault<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">localStorage<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">setItem<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;_username&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">username<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">\/\/ Ilovaga o&#39;tish<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">navigate<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;\/app&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    };<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;home&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">h2<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">Sign in to your todo-list<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">h2<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">form<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">onSubmit<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">handleSubmit<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;home__form&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">label<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">htmlFor<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;username&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">Your Username<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">label<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">input<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">value<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">username<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">required<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">onChange<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">setUsername<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">target<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">value<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;input&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">\/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">SIGN IN<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">form<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">export<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">default<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Home<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Asosiy component.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bu yerda biz dasturning markaziy qismi uchun foydalanuvchi interfeysini yaratamiz.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"880\" height=\"471\" src=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-1.png\" alt=\"\" class=\"wp-image-3531\" srcset=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-1.png 880w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-1-300x161.png 300w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-1-768x411.png 768w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Quyidagi kod parchasini Main.js fayliga ko\u2019chiring.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import React, { useState } from &quot;react&quot;;\nimport Nav from &quot;.\/Nav&quot;;\n\nfunction Main({ socket }) {\n    const [todo, setTodo] = useState(&quot;&quot;);\n\n    \/\/ Ish identifikatori sifatida tasodifiy qator hosil qiladi\n    const generateID = () =&gt; Math.random().toString(36).substring(2, 10);\n\n    const handleAddTodo = (e) =&gt; {\n        e.preventDefault();\n    \/\/ Har bir ish shunday tuzilishga ega - id, ish va sharhlar.\n        console.log({\n            id: generateID(),\n            todo,\n            comments: [],\n        });\n        setTodo(&quot;&quot;);\n    };\n\n    return (\n        <div&gt;\n            <Nav \/&gt;\n            <form className='form' onSubmit={handleAddTodo}&gt;\n                <input\n                    value={todo}\n                    onChange={(e) =&gt; setTodo(e.target.value)}\n                    className='input'\n                    required\n                \/&gt;\n                <button className='form__cta'&gt;ADD TODO<\/button&gt;\n            <\/form&gt;\n\n            <div className='todo__container'&gt;\n                <div className='todo__item'&gt;\n                    <p&gt;Contributing to open-source<\/p&gt;\n                    <div&gt;\n                        <button className='commentsBtn'&gt;View Comments<\/button&gt;\n                        <button className='deleteBtn'&gt;DELETE<\/button&gt;\n                    <\/div&gt;\n                <\/div&gt;\n\n                <div className='todo__item'&gt;\n                    <p&gt;Coffee chat with the team<\/p&gt;\n                    <div&gt;\n                        <button className='commentsBtn'&gt;View Comments<\/button&gt;\n                        <button className='deleteBtn'&gt;DELETE<\/button&gt;\n                    <\/div&gt;\n                <\/div&gt;\n\n                <div className='todo__item'&gt;\n                    <p&gt;Work on my side projects<\/p&gt;\n                    <div&gt;\n                        <button className='commentsBtn'&gt;View Comments<\/button&gt;\n                        <button className='deleteBtn'&gt;DELETE<\/button&gt;\n                    <\/div&gt;\n                <\/div&gt;\n            <\/div&gt;\n        <\/div&gt;\n    );\n}\n\nexport default Main;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">React<\/span><span style=\"color: #D4D4D4\">, { <\/span><span style=\"color: #9CDCFE\">useState<\/span><span style=\"color: #D4D4D4\"> } <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;react&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Nav<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;.\/Nav&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Main<\/span><span style=\"color: #D4D4D4\">({ <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\"> }) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">todo<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4FC1FF\">setTodo<\/span><span style=\"color: #D4D4D4\">] = <\/span><span style=\"color: #DCDCAA\">useState<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Ish identifikatori sifatida tasodifiy qator hosil qiladi<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">generateID<\/span><span style=\"color: #D4D4D4\"> = () <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Math<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">random<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">toString<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">36<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #DCDCAA\">substring<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">handleAddTodo<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">preventDefault<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Har bir ish shunday tuzilishga ega - id, ish va sharhlar.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">({<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">id:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">generateID<\/span><span style=\"color: #D4D4D4\">(),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">comments:<\/span><span style=\"color: #D4D4D4\"> [],<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">setTodo<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    };<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">Nav<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #808080\">\/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">form<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;form&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">onSubmit<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">handleAddTodo<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">input<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">value<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">onChange<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">setTodo<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">target<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">value<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;input&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">required<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">\/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;form__cta&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">ADD TODO<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">form<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;todo__container&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;todo__item&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">Contributing to open-source<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;commentsBtn&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">View Comments<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;deleteBtn&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">DELETE<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;todo__item&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">Coffee chat with the team<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;commentsBtn&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">View Comments<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;deleteBtn&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">DELETE<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;todo__item&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">Work on my side projects<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;commentsBtn&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">View Comments<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;deleteBtn&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">DELETE<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">export<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">default<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Main<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Yuqoridagi kod parchasi foydalanuvchilarga ishlarni yaratish, sharhlarni ko&#8217;rish va mavjud ishlarni o&#8217;chirish imkonini beruvchi foydalanuvchi interfeysi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nav komponenti ilovaning navigatsiya panelidir \u2013 keyinchalik ushbu qo\u2018llanmada biz ushbu komponentda Novu yordamida bildirishnomalarni yuboramiz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nav komponentini yarating va unga quyidagi kodni ko&#8217;chiring:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ \/src\/components\/Nav.js ichida\nimport React from &quot;react&quot;;\n\nconst Nav = () =&gt; {\n    return (\n        <nav className='navbar'&gt;\n            <h2&gt;Todo List<\/h2&gt;\n        <\/nav&gt;\n    );\n};\n\nexport default Nav;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ \/src\/components\/Nav.js ichida<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">React<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;react&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Nav<\/span><span style=\"color: #D4D4D4\"> = () <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">nav<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;navbar&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">h2<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">Todo List<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">h2<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">nav<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">export<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">default<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Nav<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Tabriklaymiz! Siz ilova uchun foydalanuvchi interfeysini yaratdingiz. Keyingi bo&#8217;limlarda siz Socket.io yordamida real vaqtda ma&#8217;lumotlarni va Novu yordamida bildirishnomalarni qanday yuborishni o&#8217;rganasiz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Yangi ishni qanday yaratadi.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ushbu bo&#8217;limda men sizga yangi vazifalarni yaratish va ularni Socket.io yordamida React ilovasida ko&#8217;rsatishni ko&#8217;rsataman.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yangi topshiriqni serverga Socket.io orqali yuborish uchun <em>Main<\/em>.<em>js<\/em> dagi <em>handleAddTodo<\/em> funksiyasini yangilang.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"const handleAddTodo = (e) =&gt; {\n    e.preventDefault();\n    \/\/ Voqeani addTodo Socket.io orqali yuboradi\n \/\/ id, ish va bir qator sharhlarni o'z ichiga oladi\n    socket.emit(&quot;addTodo&quot;, {\n        id: generateID(),\n        todo,\n        comments: [],\n    });\n    setTodo(&quot;&quot;);\n};\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">handleAddTodo<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">preventDefault<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Voqeani addTodo Socket.io orqali yuboradi<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #6A9955\">\/\/ id, ish va bir qator sharhlarni o&#39;z ichiga oladi<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">emit<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;addTodo&quot;<\/span><span style=\"color: #D4D4D4\">, {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">id:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">generateID<\/span><span style=\"color: #D4D4D4\">(),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">comments:<\/span><span style=\"color: #D4D4D4\"> [],<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">setTodo<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Serverda voqea tinglovchisini yarating.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"socketIO.on(&quot;connection&quot;, (socket) =&gt; {\n    console.log(`\u26a1: ${socket.id} user just connected!`);\n\n    socket.on(&quot;addTodo&quot;, (todo) =&gt; {\n        \/\/ Ish - React ilovasidan ob'ektni o'z ichiga oladi\n        console.log(todo);\n    });\n\n    socket.on(&quot;disconnect&quot;, () =&gt; {\n        socket.disconnect();\n        console.log(&quot;\ud83d\udd25: A user disconnected&quot;);\n    });\n});\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #9CDCFE\">socketIO<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;connection&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">`\u26a1: <\/span><span style=\"color: #569CD6\">${<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> user just connected!`<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;addTodo&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">\/\/ Ish - React ilovasidan ob&#39;ektni o&#39;z ichiga oladi<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    });<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;disconnect&quot;<\/span><span style=\"color: #D4D4D4\">, () <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">disconnect<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;\ud83d\udd25: A user disconnected&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ichki serverda barcha ishlarni o&#8217;z ichiga olgan massiv yarating va ro&#8217;yxatga yangi ishni qo&#8217;shing.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Barcha rejalashtirilgan vazifalarni o'z ichiga olgan massiv\nlet todoList = [];\n\nsocketIO.on(&quot;connection&quot;, (socket) =&gt; {\n    console.log(`\u26a1: ${socket.id} user just connected!`);\n\n    socket.on(&quot;addTodo&quot;, (todo) =&gt; {\n        \/\/ Vazifalar ro'yxatiga todo ob'ektini qo'shadi.\n        todoList.unshift(todo);\n        \/\/ Barcha ishlarni React ilovasiga yuboradi\n        socket.emit(&quot;todos&quot;, todoList);\n    });\n\n    socket.on(&quot;disconnect&quot;, () =&gt; {\n        socket.disconnect();\n        console.log(&quot;\ud83d\udd25: A user disconnected&quot;);\n    });\n});\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Barcha rejalashtirilgan vazifalarni o&#39;z ichiga olgan massiv<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">let<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\"> = [];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">socketIO<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;connection&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">`\u26a1: <\/span><span style=\"color: #569CD6\">${<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> user just connected!`<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;addTodo&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">\/\/ Vazifalar ro&#39;yxatiga todo ob&#39;ektini qo&#39;shadi.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">unshift<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">\/\/ Barcha ishlarni React ilovasiga yuboradi<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">emit<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;todos&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    });<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;disconnect&quot;<\/span><span style=\"color: #D4D4D4\">, () <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">disconnect<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;\ud83d\udd25: A user disconnected&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">UseEffect ilgaki yordamida React ilovangizda vazifalar tinglovchisini yarating. Quyidagi koddan nusxa oling:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ src\/components\/Main.js ichida\nuseEffect(() =&gt; {\n    socket.on(&quot;todos&quot;, (data) =&gt; console.log(data));\n}, [socket]);\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ src\/components\/Main.js ichida<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">useEffect<\/span><span style=\"color: #D4D4D4\">(() <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;todos&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">data<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">data<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}, [<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">]);<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Vazifalar ro&#8217;yxatini quyidagidek ko&#8217;rsating:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import React, { useState, useEffect } from &quot;react&quot;;\nimport Nav from &quot;.\/Nav&quot;;\n\nfunction Main({ socket }) {\n    const [todo, setTodo] = useState(&quot;&quot;);\n    const [todoList, setTodoList] = useState([]);\n\n    const generateID = () =&gt; Math.random().toString(36).substring(2, 10);\n\n    const handleAddTodo = (e) =&gt; {\n        e.preventDefault();\n        socket.emit(&quot;addTodo&quot;, {\n            id: generateID(),\n            todo,\n            comments: [],\n        });\n        setTodo(&quot;&quot;);\n    };\n\n    useEffect(() =&gt; {\n        socket.on(&quot;todos&quot;, (data) =&gt; setTodoList(data));\n    }, [socket]);\n\n    return (\n        <div&gt;\n            <Nav \/&gt;\n            <form className='form' onSubmit={handleAddTodo}&gt;\n                <input\n                    value={todo}\n                    onChange={(e) =&gt; setTodo(e.target.value)}\n                    className='input'\n                    required\n                \/&gt;\n                <button className='form__cta'&gt;ADD TODO<\/button&gt;\n            <\/form&gt;\n\n            <div className='todo__container'&gt;\n                {todoList.map((item) =&gt; (\n                    <div className='todo__item' key={item.id}&gt;\n                        <p&gt;{item.todo}<\/p&gt;\n                        <div&gt;\n                            <button className='commentsBtn'&gt;View Comments<\/button&gt;\n\n                            <button className='deleteBtn'&gt;DELETE<\/button&gt;\n                        <\/div&gt;\n                    <\/div&gt;\n                ))}\n            <\/div&gt;\n        <\/div&gt;\n    );\n}\n\nexport default Main;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">React<\/span><span style=\"color: #D4D4D4\">, { <\/span><span style=\"color: #9CDCFE\">useState<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">useEffect<\/span><span style=\"color: #D4D4D4\"> } <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;react&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Nav<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;.\/Nav&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Main<\/span><span style=\"color: #D4D4D4\">({ <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\"> }) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">todo<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4FC1FF\">setTodo<\/span><span style=\"color: #D4D4D4\">] = <\/span><span style=\"color: #DCDCAA\">useState<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">todoList<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4FC1FF\">setTodoList<\/span><span style=\"color: #D4D4D4\">] = <\/span><span style=\"color: #DCDCAA\">useState<\/span><span style=\"color: #D4D4D4\">([]);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">generateID<\/span><span style=\"color: #D4D4D4\"> = () <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Math<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">random<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">toString<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">36<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #DCDCAA\">substring<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">handleAddTodo<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">preventDefault<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">emit<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;addTodo&quot;<\/span><span style=\"color: #D4D4D4\">, {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">id:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">generateID<\/span><span style=\"color: #D4D4D4\">(),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">comments:<\/span><span style=\"color: #D4D4D4\"> [],<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">setTodo<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    };<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">useEffect<\/span><span style=\"color: #D4D4D4\">(() <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;todos&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">data<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">setTodoList<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">data<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }, [<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">]);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">Nav<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #808080\">\/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">form<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;form&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">onSubmit<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">handleAddTodo<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">input<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">value<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">onChange<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">setTodo<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">target<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">value<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;input&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">required<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">\/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;form__cta&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">ADD TODO<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">form<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;todo__container&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">map<\/span><span style=\"color: #D4D4D4\">((<\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;todo__item&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">key<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;commentsBtn&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">View Comments<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;deleteBtn&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">DELETE<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                ))<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">export<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">default<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Main<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Hozircha biz faqat birini qo&#8217;shganimizdagina mavjud ishlarni ko&#8217;rishimiz mumkin. Keling sahifa yuklanganda vazifalarni ko&#8217;rsata oladigan qilaylik.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Serverda vazifalar ro&#8217;yxatini qaytaradigan marshrut yarating.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"app.get(&quot;\/api&quot;, (req, res) =&gt; {\n    res.json(todoList);\n});\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #9CDCFE\">app<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">get<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;\/api&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">req<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">res<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">res<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">json<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Serverdan vazifalar ro\u02bbyxatini olish va yangi vazifalarni tinglash uchun useEffect ilgakini yangilang.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"useEffect(() =&gt; {\n    function fetchTodos() {\n        fetch(&quot;http:\/\/localhost:4000\/api&quot;)\n            .then((res) =&gt; res.json())\n            .then((data) =&gt; setTodoList(data))\n            .catch((err) =&gt; console.error(err));\n    }\n    fetchTodos();\n\n    socket.on(&quot;todos&quot;, (data) =&gt; setTodoList(data));\n}, [socket]);\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #DCDCAA\">useEffect<\/span><span style=\"color: #D4D4D4\">(() <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">fetchTodos<\/span><span style=\"color: #D4D4D4\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">fetch<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;http:\/\/localhost:4000\/api&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            .<\/span><span style=\"color: #DCDCAA\">then<\/span><span style=\"color: #D4D4D4\">((<\/span><span style=\"color: #9CDCFE\">res<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">res<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">json<\/span><span style=\"color: #D4D4D4\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            .<\/span><span style=\"color: #DCDCAA\">then<\/span><span style=\"color: #D4D4D4\">((<\/span><span style=\"color: #9CDCFE\">data<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">setTodoList<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">data<\/span><span style=\"color: #D4D4D4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            .<\/span><span style=\"color: #DCDCAA\">catch<\/span><span style=\"color: #D4D4D4\">((<\/span><span style=\"color: #9CDCFE\">err<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">error<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">err<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">fetchTodos<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;todos&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">data<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">setTodoList<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">data<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}, [<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">]);<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Tabriklaymiz, endi biz vazifalar ro&#8217;yxatiga yangi ishlarni qo&#8217;shishimiz mumkin.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"878\" height=\"466\" src=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-2.png\" alt=\"\" class=\"wp-image-3532\" srcset=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-2.png 878w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-2-300x159.png 300w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-2-768x408.png 768w\" sizes=\"auto, (max-width: 878px) 100vw, 878px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Mavjud ishlarni qanday o&#8217;chirish mumkin?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tanlangan ishning identifikatorini oladigan o&#8217;chirish tugmasi uchun onClick hodisasini qo&#8217;shing.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"<button className='deleteBtn' onClick={() =&gt; deleteTodo(item.id)}&gt;\n    DELETE\n<\/button&gt;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;deleteBtn&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">onClick<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">() <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">deleteTodo<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    DELETE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><em>DeleteTodo<\/em> funksiyasini yarating va ish identifikatorini Socket.io orqali serverga yuboring.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"const deleteTodo = (id) =&gt; socket.emit(&quot;deleteTodo&quot;, id);\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">deleteTodo<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">emit<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;deleteTodo&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><em>DeleteTodo<\/em> hodisasi uchun tinglovchi yarating, bu topshiriqni identifikatori bo\u02bbyicha topshiriqlar ro\u02bbyxatidan olib tashlaydi.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Barcha rejalashtirilgan vazifalarni o'z ichiga olgan massiv\nlet todoList = [];\nsocketIO.on(&quot;connection&quot;, (socket) =&gt; {\n    console.log(`\u26a1: ${socket.id} user just connected!`);\n\n    socket.on(&quot;addTodo&quot;, (todo) =&gt; {\n        todoList.unshift(todo);\n        socket.emit(&quot;todos&quot;, todoList);\n    });\n\n    \/\/ Bir qator holatlarni filtrlaydi va\n    \/\/ yangilangan ishni React ilovasiga yuboradi.\n    socket.on(&quot;deleteTodo&quot;, (id) =&gt; {\n        todoList = todoList.filter((todo) =&gt; todo.id !== id);\n        \/\/ React ilovasiga yangilangan ishni yuboradi\n        socket.emit(&quot;todos&quot;, todoList);\n    });\n\n    socket.on(&quot;disconnect&quot;, () =&gt; {\n        socket.disconnect();\n        console.log(&quot;\ud83d\udd25: A user disconnected&quot;);\n    });\n});\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Barcha rejalashtirilgan vazifalarni o&#39;z ichiga olgan massiv<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">let<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\"> = [];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">socketIO<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;connection&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">`\u26a1: <\/span><span style=\"color: #569CD6\">${<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\"> user just connected!`<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;addTodo&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">unshift<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">emit<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;todos&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    });<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Bir qator holatlarni filtrlaydi va<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ yangilangan ishni React ilovasiga yuboradi.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;deleteTodo&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">filter<\/span><span style=\"color: #D4D4D4\">((<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #D4D4D4\"> !== <\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">\/\/ React ilovasiga yangilangan ishni yuboradi<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">emit<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;todos&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    });<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;disconnect&quot;<\/span><span style=\"color: #D4D4D4\">, () <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">disconnect<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;\ud83d\udd25: A user disconnected&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Endi har bir ishni Socket.io orqali qo&#8217;shishingiz va olib tashlashingiz mumkin. Endi har bir ish uchun sharh qo&#8217;shish va ko&#8217;rsatishni o&#8217;rganasiz.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"878\" height=\"426\" src=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-3.png\" alt=\"\" class=\"wp-image-3533\" srcset=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-3.png 878w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-3-300x146.png 300w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-3-768x373.png 768w\" sizes=\"auto, (max-width: 878px) 100vw, 878px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Har bir ish uchun sharhlarni qanday ko&#8217;rsatish va qo&#8217;shish.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ushbu bo&#8217;limda men sizga har bir vazifaga sharhlar qo&#8217;shishni ko&#8217;rsataman va siz Reactda modallarni qanday yaratishni ham o&#8217;rganasiz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">React.js da modal yaratish.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Quyida ko&#8217;rsatilganidek, har bir holat uchun sharhlarni o&#8217;z ichiga olgan <em>Modal<\/em>.<em>js<\/em> faylini yarating:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import React, { useState } from &quot;react&quot;;\n\nconst Modal = ({ socket }) =&gt; {\n    const [comment, setComment] = useState(&quot;&quot;);\n\n    const addComment = (e) =&gt; {\n        e.preventDefault();\n        console.log({ comment });\n        setComment(&quot;&quot;);\n    };\n\n    return (\n        <div className='modal'&gt;\n            <div className='modal__container'&gt;\n                <h3&gt;Comments<\/h3&gt;\n                <form className='comment__form' onSubmit={addComment}&gt;\n                    <input\n                        className='comment__input'\n                        type='text'\n                        value={comment}\n                        onChange={(e) =&gt; setComment(e.target.value)}\n                        required\n                    \/&gt;\n                    <button&gt;Add Comment<\/button&gt;\n                <\/form&gt;\n                <div className='comments__container'&gt;\n                    <div className='comment'&gt;\n                        <p&gt;\n                            <strong&gt;Nevo - <\/strong&gt; Hello guys\n                        <\/p&gt;\n                    <\/div&gt;\n                <\/div&gt;\n            <\/div&gt;\n        <\/div&gt;\n    );\n};\n\nexport default Modal;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">React<\/span><span style=\"color: #D4D4D4\">, { <\/span><span style=\"color: #9CDCFE\">useState<\/span><span style=\"color: #D4D4D4\"> } <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;react&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Modal<\/span><span style=\"color: #D4D4D4\"> = ({ <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\"> }) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">comment<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4FC1FF\">setComment<\/span><span style=\"color: #D4D4D4\">] = <\/span><span style=\"color: #DCDCAA\">useState<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">addComment<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">preventDefault<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">({ <\/span><span style=\"color: #9CDCFE\">comment<\/span><span style=\"color: #D4D4D4\"> });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">setComment<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    };<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;modal&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;modal__container&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">h3<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">Comments<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">h3<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">form<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;comment__form&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">onSubmit<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">addComment<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">input<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;comment__input&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #9CDCFE\">type<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;text&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #9CDCFE\">value<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">comment<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #9CDCFE\">onChange<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">setComment<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">target<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">value<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #9CDCFE\">required<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">\/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">Add Comment<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">form<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;comments__container&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;comment&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">strong<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">Nevo - <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">strong<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\"> Hello guys<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">export<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">default<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Modal<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ushbu komponentni modal ko&#8217;rinishi uchun biz <em>src<\/em>\/<em>index.css<\/em> faylida quyida bajarilganidek, unga biroz stil berishimiz kerak, ayniqsa pozitsiya va z-index stilini.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\".modal {\n    min-height: 100vh;\n    width: 100%;\n    position: fixed;\n    z-index: 10;\n    top: 0;\n    background-color: #fff;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #D7BA7D\">.modal<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">min-height<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">100vh<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">width<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">100%<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">position<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">fixed<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">z-index<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">top<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">background-color<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">#fff<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">display<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">flex<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">align-items<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">center<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">justify-content<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">center<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">CSS<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Endi, keling View Comment tugmasi bosilganda, <em>Main.js<\/em> faylidagi <em>Modal.js<\/em> komponenti o\u2019zgaradigan qilaylik.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import React, { useState, useEffect } from &quot;react&quot;;\nimport Nav from &quot;.\/Nav&quot;;\nimport Modal from &quot;.\/Modal&quot;;\n\nfunction Main({ socket }) {\n    const [todo, setTodo] = useState(&quot;&quot;);\n    const [todoList, setTodoList] = useState([]);\n    const [showModal, setShowModal] = useState(false);\n\n    const toggleModal = () =&gt; setShowModal(!showModal);\n    \/\/...boshqa funksiyalar\n    return (\n        <div&gt;\n            ...\n            <div className='todo__container'&gt;\n                {todoList.map((item) =&gt; (\n                    <div className='todo__item' key={item.id}&gt;\n                        <p&gt;{item.todo}<\/p&gt;\n                        <div&gt;\n                            {\/* Bu tugma Modal komponentni o\u2019zgartiradi ---*\/}\n                            <button className='commentsBtn' onClick={toggleModal}&gt;\n                                View Comments\n                            <\/button&gt;\n                            <button className='deleteBtn' onClick={() =&gt; deleteTodo(item.id)}&gt;\n                                DELETE\n                            <\/button&gt;\n                        <\/div&gt;\n                    <\/div&gt;\n                ))}\n            <\/div&gt;\n            {\/* Modal komponent asosiy komponentni almashtiradi *\/}\n            {showModal ? (\n                <Modal showModal={showModal} setShowModal={setShowModal} \/&gt;\n            ) : (\n                &quot;&quot;\n            )}\n        <\/div&gt;\n    );\n}\n\nexport default Main;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">React<\/span><span style=\"color: #D4D4D4\">, { <\/span><span style=\"color: #9CDCFE\">useState<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">useEffect<\/span><span style=\"color: #D4D4D4\"> } <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;react&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Nav<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;.\/Nav&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Modal<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;.\/Modal&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Main<\/span><span style=\"color: #D4D4D4\">({ <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\"> }) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">todo<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4FC1FF\">setTodo<\/span><span style=\"color: #D4D4D4\">] = <\/span><span style=\"color: #DCDCAA\">useState<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">todoList<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4FC1FF\">setTodoList<\/span><span style=\"color: #D4D4D4\">] = <\/span><span style=\"color: #DCDCAA\">useState<\/span><span style=\"color: #D4D4D4\">([]);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">showModal<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4FC1FF\">setShowModal<\/span><span style=\"color: #D4D4D4\">] = <\/span><span style=\"color: #DCDCAA\">useState<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">false<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">toggleModal<\/span><span style=\"color: #D4D4D4\"> = () <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">setShowModal<\/span><span style=\"color: #D4D4D4\">(!<\/span><span style=\"color: #9CDCFE\">showModal<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/...boshqa funksiyalar<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            ...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;todo__container&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">map<\/span><span style=\"color: #D4D4D4\">((<\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;todo__item&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">key<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                            <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #6A9955\">\/* Bu tugma Modal komponentni o\u2019zgartiradi ---*\/<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;commentsBtn&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">onClick<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">toggleModal<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                View Comments<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                            <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;deleteBtn&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">onClick<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">() <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">deleteTodo<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                DELETE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                            <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                ))<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #6A9955\">\/* Modal komponent asosiy komponentni almashtiradi *\/<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">showModal<\/span><span style=\"color: #D4D4D4\"> ? (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">Modal<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">showModal<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">showModal<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">setShowModal<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">setShowModal<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #808080\">\/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            ) : (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            )<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">export<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">default<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Main<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"879\" height=\"466\" src=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-4.png\" alt=\"\" class=\"wp-image-3534\" srcset=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-4.png 879w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-4-300x159.png 300w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-4-768x407.png 768w\" sizes=\"auto, (max-width: 879px) 100vw, 879px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">View tugmasini bosish orqali modalni ko\u2018rsatish imkoniga ega bo\u2018ldik endi keling, sharhlar konteyneridan tashqarisini bosganimizda modal oynasini yopadigan qilamiz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Modal.js<\/em> faylini quyida ko&#8217;rsatilganidek yangilang:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import React, { useState, useRef } from &quot;react&quot;;\n\nconst Modal = ({ socket, showModal, setShowModal }) =&gt; {\n    const [comment, setComment] = useState(&quot;&quot;);\n\n    const modalRef = useRef();\n    \/\/(modalRef) konteynerini ustiga bosish modalni yopadi.\n    const closeModal = (e) =&gt; {\n        if (modalRef.current === e.target) {\n            setShowModal(!showModal);\n        }\n    };\n\n    const addComment = (e) =&gt; {\n        e.preventDefault();\n        console.log({ comment });\n        setComment(&quot;&quot;);\n    };\n    return (\n        <div className='modal' onClick={closeModal} ref={modalRef}&gt;\n            ...\n        <\/div&gt;\n    );\n};\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">React<\/span><span style=\"color: #D4D4D4\">, { <\/span><span style=\"color: #9CDCFE\">useState<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">useRef<\/span><span style=\"color: #D4D4D4\"> } <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;react&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Modal<\/span><span style=\"color: #D4D4D4\"> = ({ <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">showModal<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">setShowModal<\/span><span style=\"color: #D4D4D4\"> }) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">comment<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4FC1FF\">setComment<\/span><span style=\"color: #D4D4D4\">] = <\/span><span style=\"color: #DCDCAA\">useState<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">modalRef<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">useRef<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/(modalRef) konteynerini ustiga bosish modalni yopadi.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">closeModal<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">modalRef<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">current<\/span><span style=\"color: #D4D4D4\"> === <\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">target<\/span><span style=\"color: #D4D4D4\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #DCDCAA\">setShowModal<\/span><span style=\"color: #D4D4D4\">(!<\/span><span style=\"color: #9CDCFE\">showModal<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    };<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">addComment<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">preventDefault<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">({ <\/span><span style=\"color: #9CDCFE\">comment<\/span><span style=\"color: #D4D4D4\"> });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">setComment<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    };<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;modal&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">onClick<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">closeModal<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">ref<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">modalRef<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            ...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"871\" height=\"463\" src=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-5.png\" alt=\"\" class=\"wp-image-3535\" srcset=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-5.png 871w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-5-300x159.png 300w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-5-768x408.png 768w\" sizes=\"auto, (max-width: 871px) 100vw, 871px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Tabriklaymiz! Siz React ilovasiga modallarni qanday qo&#8217;shishni o&#8217;rgandingiz. Keling, foydalanuvchilar sharhlar qo&#8217;shishi va ko&#8217;rsatishi mumkin bo&#8217;lsin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ishlar sharhi ko\u2019rsatilishi.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tanlangan ishni identifikatorini serverga yuborish uchun <em>Main<\/em>.<em>js <\/em>dagi toggleModal funksiyasini yangilang.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"const toggleModal = (todoId) =&gt; {\n    socket.emit(&quot;viewComments&quot;, todoId);\n    setShowModal(!showModal);\n};\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">toggleModal<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">todoId<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">emit<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;viewComments&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">todoId<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">setShowModal<\/span><span style=\"color: #D4D4D4\">(!<\/span><span style=\"color: #9CDCFE\">showModal<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Serverda ish identifikatorini qabul qiladigan, uning tafsilotlarini oladigan va ularni React ilovasiga yuboradigan tinglovchi yarating.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"socket.on(&quot;viewComments&quot;, (id) =&gt; {\n    for (let i = 0; i < todoList.length; i++) {\n        if (id === todoList[i].id) {\n            \/\/ ko'rsatish uchun bajariladigan ishlar tafsilotlarini React ilovasiga yuboradi\n            socket.emit(&quot;commentsReceived&quot;, todoList[i]);\n        }\n    }\n});\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;viewComments&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">let<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">; <\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\"> &lt; <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">length<\/span><span style=\"color: #D4D4D4\">; <\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">++) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #D4D4D4\"> === <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">].<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #D4D4D4\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #6A9955\">\/\/ ko&#39;rsatish uchun bajariladigan ishlar tafsilotlarini React ilovasiga yuboradi<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">emit<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;commentsReceived&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">]);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Modal<\/em>.<em>js<\/em> da commentsReceived hodisasi uchun tinglovchi yarating.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"useEffect(() =&gt; {\n    socket.on(&quot;commentsReceived&quot;, (todo) =&gt; console.log(todo));\n}, [socket]);\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #DCDCAA\">useEffect<\/span><span style=\"color: #D4D4D4\">(() <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;commentsReceived&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}, [<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">]);<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Quyidagilarni nusxalash orqali sharhlaringizni kiriting:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import React, { useEffect, useRef, useState } from &quot;react&quot;;\n\nconst Modal = ({ showModal, setShowModal, socket }) =&gt; {\n    const modalRef = useRef();\n    const [comment, setComment] = useState(&quot;&quot;);\n    const [comments, setComments] = useState([]);\n\n    const closeModal = (e) =&gt; {\n        if (modalRef.current === e.target) {\n            setShowModal(!showModal);\n        }\n    };\n\n    const addComment = (e) =&gt; {\n        e.preventDefault();\n        console.log({ comment });\n        setComment(&quot;&quot;);\n    };\n\n    \/\/ Serverdan topshiriq tafsilotlarini tinglaydi\n    useEffect(() =&gt; {\n        socket.on(&quot;commentsReceived&quot;, (todo) =&gt; setComments(todo.comments));\n    }, [socket]);\n\n    return (\n        <div className='modal' onClick={closeModal} ref={modalRef}&gt;\n            <div className='modal__container'&gt;\n                <h3&gt;Comments<\/h3&gt;\n                <form className='comment__form' onSubmit={addComment}&gt;\n                    <input\n                        className='comment__input'\n                        type='text'\n                        value={comment}\n                        onChange={(e) =&gt; setComment(e.target.value)}\n                        required\n                    \/&gt;\n                    <button&gt;Add Comment<\/button&gt;\n                <\/form&gt;\n\n                {\/*Sharhlarni ko\u2019rsatadi --- *\/}\n                <div className='comments__container'&gt;\n                    {comments.length &gt; 0 ? (\n                        comments.map((item, index) =&gt; (\n                            <div className='comment' key={index}&gt;\n                                <p&gt;\n                                    <strong&gt;{item.name} - <\/strong&gt; {item.text}\n                                <\/p&gt;\n                            <\/div&gt;\n                        ))\n                    ) : (\n                        <p&gt;No comments available yet...<\/p&gt;\n                    )}\n                <\/div&gt;\n            <\/div&gt;\n        <\/div&gt;\n    );\n};\n\nexport default Modal;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">React<\/span><span style=\"color: #D4D4D4\">, { <\/span><span style=\"color: #9CDCFE\">useEffect<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">useRef<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">useState<\/span><span style=\"color: #D4D4D4\"> } <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;react&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Modal<\/span><span style=\"color: #D4D4D4\"> = ({ <\/span><span style=\"color: #9CDCFE\">showModal<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">setShowModal<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\"> }) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">modalRef<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">useRef<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">comment<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4FC1FF\">setComment<\/span><span style=\"color: #D4D4D4\">] = <\/span><span style=\"color: #DCDCAA\">useState<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">comments<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4FC1FF\">setComments<\/span><span style=\"color: #D4D4D4\">] = <\/span><span style=\"color: #DCDCAA\">useState<\/span><span style=\"color: #D4D4D4\">([]);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">closeModal<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">modalRef<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">current<\/span><span style=\"color: #D4D4D4\"> === <\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">target<\/span><span style=\"color: #D4D4D4\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #DCDCAA\">setShowModal<\/span><span style=\"color: #D4D4D4\">(!<\/span><span style=\"color: #9CDCFE\">showModal<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    };<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">addComment<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">preventDefault<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">({ <\/span><span style=\"color: #9CDCFE\">comment<\/span><span style=\"color: #D4D4D4\"> });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">setComment<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    };<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Serverdan topshiriq tafsilotlarini tinglaydi<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">useEffect<\/span><span style=\"color: #D4D4D4\">(() <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;commentsReceived&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">setComments<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">comments<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }, [<\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">]);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;modal&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">onClick<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">closeModal<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">ref<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">modalRef<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;modal__container&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">h3<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">Comments<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">h3<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">form<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;comment__form&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">onSubmit<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">addComment<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">input<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;comment__input&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #9CDCFE\">type<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;text&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #9CDCFE\">value<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">comment<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #9CDCFE\">onChange<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">setComment<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">target<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">value<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #9CDCFE\">required<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">\/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">Add Comment<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">form<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #6A9955\">\/*Sharhlarni ko\u2019rsatadi --- *\/<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;comments__container&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">comments<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">length<\/span><span style=\"color: #D4D4D4\"> &gt; <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> ? (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #9CDCFE\">comments<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">map<\/span><span style=\"color: #D4D4D4\">((<\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">index<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;comment&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">key<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">index<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">strong<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">name<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #D4D4D4\"> - <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">strong<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">text<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                            <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        ))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    ) : (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">No comments available yet...<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">p<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    )<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">export<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">default<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Modal<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Vazifalarga sharhlar qo&#8217;shish.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Main<\/em>.<em>js<\/em> da tanlangan ish identifikatorini o&#8217;z ichiga olgan holat yarating. Holatni <em>Modal<\/em>.<em>js<\/em> komponentiga o&#8217;tkazing.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"const toggleModal = (itemId) =&gt; {\n    socket.emit(&quot;viewComments&quot;, itemId);\n    \/\/ Ushbu identifikatorni Modal komponentga o'tkazing\n    setSelectedItemID(itemId);\n    setShowModal(!showModal);\n};\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">toggleModal<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">itemId<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">emit<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;viewComments&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">itemId<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Ushbu identifikatorni Modal komponentga o&#39;tkazing<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">setSelectedItemID<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">itemId<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">setShowModal<\/span><span style=\"color: #D4D4D4\">(!<\/span><span style=\"color: #9CDCFE\">showModal<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Sharh ma\u02bclumotlarini serverga yuborish uchun <em>Modal<\/em>.<em>js<\/em> dagi addComment funksiyasini yangilang.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"const addComment = (e) =&gt; {\n    e.preventDefault();\n    socket.emit(&quot;updateComment&quot;, {\n        todoID: selectedItemID, \/\/Main.js faylidan uzatilgan identifikator\n        comment,\n        user: localStorage.getItem(&quot;_username&quot;),\n    });\n    setComment(&quot;&quot;);\n};\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">addComment<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">e<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">preventDefault<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">emit<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;updateComment&quot;<\/span><span style=\"color: #D4D4D4\">, {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">todoID:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">selectedItemID<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #6A9955\">\/\/Main.js faylidan uzatilgan identifikator<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">comment<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">user:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">localStorage<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">getItem<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;_username&quot;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">setComment<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Serverda \u201ctopshiriq sharhlariga\u201d sharh qo&#8217;shadigan addComment hodisasi tinglovchisini yarating.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"socket.on(&quot;updateComment&quot;, (data) =&gt; {\n    \/\/ Obyektdan elementlarni yo'q qilish\n    const { user, todoID, comment } = data;\n\n    for (let i = 0; i < todoList.length; i++) {\n        \/\/\ud83d\udc47\ud83c\udffb Gets the todo\n        if (todoID === todoList[i].id) {\n            \/\/\ud83d\udc47\ud83c\udffb Add the comment to the list of comments\n            todoList[i].comments.push({ name: user, text: comment });\n            \/\/\ud83d\udc47\ud83c\udffb Sends an update to React app\n            socket.emit(&quot;commentsReceived&quot;, todoList[i]);\n        }\n    }\n});\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">on<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;updateComment&quot;<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #9CDCFE\">data<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Obyektdan elementlarni yo&#39;q qilish<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> { <\/span><span style=\"color: #4FC1FF\">user<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4FC1FF\">todoID<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4FC1FF\">comment<\/span><span style=\"color: #D4D4D4\"> } = <\/span><span style=\"color: #9CDCFE\">data<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">let<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">; <\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\"> &lt; <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">length<\/span><span style=\"color: #D4D4D4\">; <\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">++) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">\/\/\ud83d\udc47\ud83c\udffb Gets the todo<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">todoID<\/span><span style=\"color: #D4D4D4\"> === <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">].<\/span><span style=\"color: #9CDCFE\">id<\/span><span style=\"color: #D4D4D4\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #6A9955\">\/\/\ud83d\udc47\ud83c\udffb Add the comment to the list of comments<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">].<\/span><span style=\"color: #9CDCFE\">comments<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">push<\/span><span style=\"color: #D4D4D4\">({ <\/span><span style=\"color: #9CDCFE\">name:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">user<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">text:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">comment<\/span><span style=\"color: #D4D4D4\"> });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #6A9955\">\/\/\ud83d\udc47\ud83c\udffb Sends an update to React app<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">emit<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;commentsReceived&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">]);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Tabriklaymiz! Endi biz har bir vazifaga sharhlar qo\u2018shishimiz va ularni React ilovasida ko\u2018rsatishimiz mumkin.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"874\" height=\"460\" src=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-6.png\" alt=\"\" class=\"wp-image-3536\" srcset=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-6.png 874w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-6-300x158.png 300w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-6-768x404.png 768w\" sizes=\"auto, (max-width: 874px) 100vw, 874px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Qo\u2019shimcha: Novu bilan bildirishnomalarni yuborish.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Agar foydalanuvchi sharh yoki yangi vazifa qo\u02bbshganda ilovangizga bildirishnomalar qo\u02bbshmoqchi bo\u02bblsangiz, buni <em>Nav<\/em>.<em>js<\/em> komponentidagi <em>Novu<\/em> bilan osongina qilishingiz mumkin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Novu sizga elektron pochta, SMS va ilova ichidagi bildirishnomalar kabi turli xil bildirishnomalarni qo&#8217;shish imkonini beradi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">React va Node.js ilovasiga Novu qanday qo&#8217;shiladi?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ilova ichidagi bildirishnomani qo\u2018shish uchun serverga Novu Node.js SDK va React ilovasidagi bildirishnomalar markazini o\u2018rnating.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"#Install on the client\nnpm install @novu\/notification-center\n\n#Install on the server\nnpm install @novu\/node\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">#Install on the client<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">npm install <\/span><span style=\"color: #81A1C1\">@<\/span><span style=\"color: #D8DEE9FF\">novu\/notification-center<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">#Install on the server<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">npm install <\/span><span style=\"color: #81A1C1\">@<\/span><span style=\"color: #D8DEE9FF\">novu\/node<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Quyidagi kodni bajarish orqali Novu loyihasini yarating. Sizga shaxsiylashtirilgan boshqaruv paneliga kirish huquqi beriladi.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"#Install on the client\nnpx novu init\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">#Install on the client<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">npx novu init<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Novu loyihasini yaratishdan oldin siz Github-ga kirishingiz kerak bo&#8217;ladi. Quyidagi kod parchasi npx novu init-ni ishga tushirgandan so&#8217;ng bajarishingiz kerak bo&#8217;lgan qadamlarni o&#8217;z ichiga oladi.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;--cbp-line-highlight-color:rgba(201, 218, 248, 0.2);line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"Now let's setup your account and send your first notification\n\u2753 What is your application name? Devto Clone\n\u2753 Now lets setup your environment. How would you like to proceed?\n   &gt; Create a free cloud account (Recommended)\n\u2753 Create your account with:\n   &gt; Sign-in with GitHub\n\u2753 I accept the Terms and Condidtions (https:\/\/novu.co\/terms) and have read the Privacy Policy (https:\/\/novu.co\/privacy)\n    &gt; Yes\n\u2714Create your account successfully.\n\nWe've created a demo web page for you to see novu notifications in action.\nVisit: http:\/\/localhost:57807\/demo to continue\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">Now let&#39;s setup your account and send your first notification<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u2753 What is your application name? Devto Clone<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u2753 Now lets setup your environment. How would you like to proceed?<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   <\/span><span style=\"color: #81A1C1\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> Create a free cloud account <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">Recommended<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u2753 Create your account with:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   <\/span><span style=\"color: #81A1C1\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> Sign-in with GitHub<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u2753 I accept the Terms and Condidtions <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">https:\/\/novu.co\/terms<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> and have read the Privacy Policy <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">https:\/\/novu.co\/privacy<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> Yes<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u2714Create your account successfully.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">We&#39;ve created a demo web page <\/span><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> you to see novu notifications <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> action.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">Visit: http:\/\/localhost:57807\/demo to continue<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#2e3440;color:#c8d0e0;font-size:12px;line-height:1;position:relative\">BAT<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><em>http:\/\/localhost:57807\/demo<\/em> demo web-sahifasiga tashrif buyuring, sahifadan obunachi identifikatoringizni nusxalang va qo&#8217;llanmani o&#8217;tkazib yuborish tugmasini bosing. Biz undan keyinroq ushbu qo&#8217;llanmada foydalanamiz.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"880\" height=\"480\" src=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-7.png\" alt=\"\" class=\"wp-image-3537\" srcset=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-7.png 880w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-7-300x164.png 300w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-7-768x419.png 768w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Hujjatdagi ilova ichidagi bildirishnomalar uchun Novu va uning kerakli elementlarini o&#8217;z ichiga olishi uchun <em>components<\/em>\/<em>Nav<\/em>.<em>jsfile<\/em> faylini yangilang.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import React from &quot;react&quot;;\nimport {\n    NovuProvider,\n    PopoverNotificationCenter,\n    NotificationBell,\n} from &quot;@novu\/notification-center&quot;;\nimport { useNavigate } from &quot;react-router-dom&quot;;\n\nconst Nav = () =&gt; {\n    const navigate = useNavigate();\n\n    const onNotificationClick = (notification) =&gt;\n        navigate(notification.cta.data.url);\n    return (\n        <nav className='navbar'&gt;\n            <h2&gt;Todo List<\/h2&gt;\n            <div&gt;\n                <NovuProvider\n                    subscriberId='<YOUR_SUBSCRIBER_ID'\n                    applicationIdentifier='<YOUR_APP_ID&gt;'\n                &gt;\n                    <PopoverNotificationCenter\n                        onNotificationClick={onNotificationClick}\n                        colorScheme='light'\n                    &gt;\n                        {({ unseenCount }) =&gt; (\n                            <NotificationBell unseenCount={unseenCount} \/&gt;\n                        )}\n                    <\/PopoverNotificationCenter&gt;\n                <\/NovuProvider&gt;\n            <\/div&gt;\n        <\/nav&gt;\n    );\n};\n\nexport default Nav;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">React<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;react&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">NovuProvider<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">PopoverNotificationCenter<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">NotificationBell<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;@novu\/notification-center&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> { <\/span><span style=\"color: #9CDCFE\">useNavigate<\/span><span style=\"color: #D4D4D4\"> } <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;react-router-dom&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Nav<\/span><span style=\"color: #D4D4D4\"> = () <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">navigate<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">useNavigate<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">onNotificationClick<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #9CDCFE\">notification<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">navigate<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">notification<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">cta<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">data<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">url<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">nav<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">className<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;navbar&#39;<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">h2<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">Todo List<\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">h2<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">NovuProvider<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">subscriberId<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;&lt;YOUR_SUBSCRIBER_ID&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">applicationIdentifier<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;&lt;YOUR_APP_ID&gt;&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">PopoverNotificationCenter<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #9CDCFE\">onNotificationClick<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">onNotificationClick<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #9CDCFE\">colorScheme<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;light&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">({ <\/span><span style=\"color: #9CDCFE\">unseenCount<\/span><span style=\"color: #D4D4D4\"> }) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                            <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">NotificationBell<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">unseenCount<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #9CDCFE\">unseenCount<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #808080\">\/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        )<\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #4EC9B0\">PopoverNotificationCenter<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #4EC9B0\">NovuProvider<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">div<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">nav<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">export<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">default<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Nav<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Yuqoridagi kod parchasi Nav komponentiga Novu bildirishnoma qo&#8217;ng&#8217;irog&#8217;i belgisini qo&#8217;shib, bizga ilova ichidagi barcha bildirishnomalarni ko&#8217;rish imkonini beradi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">NovuProvider komponenti uchun abonent identifikatoringiz talab qilinadi &#8211; avvalroq<em> http:\/\/localhost:57807\/demo<\/em> saytidan ko\u02bbchirilgan va Novu Manage platformasidagi API kalitlari bo\u02bblimidagi Sozlamalar bo\u02bblimida mavjud ilova identifikatoringiz.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"880\" height=\"473\" src=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-8.png\" alt=\"\" class=\"wp-image-3538\" srcset=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-8.png 880w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-8-300x161.png 300w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-8-768x413.png 768w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Endi, keling siz ilovaga qo\u2019shmoqchi bo\u2019lgan,funksiyalarni tushundiradigan, ilovaga ish jarayoni yarataylik<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cIshlab chiqish yon panelida\u201d bildirishnomani tanlang va bildirishnoma shablonini yarating. O&#8217;zingiz yaratgan shablonni tanlang, \u201cIsh jarayoni muharririni\u201d bosing va ish jarayoni quyidagi kabi ko&#8217;rinishiga ishonch hosil qiling:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"880\" height=\"585\" src=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-9.png\" alt=\"\" class=\"wp-image-3539\" srcset=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-9.png 880w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-9-300x199.png 300w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-9-768x511.png 768w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Yuqoridagi rasmdan tushunsak bo\u2019ladiki, Novu ilova ichidagi bildirishnomani yuborishdan oldin, Digest mexanizmini ishga tushiradi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Novu Digest bizga ilova ichida bildirishnomalarni qanday yuborishni nazorat qilish imkonini beradi. U bir nechta hodisalarni to&#8217;playdi va ularni bitta xabar sifatida yuboradi. Yuqoridagi rasm har 2 daqiqada bildirishnomalarni yuboradi va agar sizda ko&#8217;p foydalanuvchilar va tez-tez yangilanishlar bo&#8217;lsa, bu samarali bo&#8217;lishi mumkin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In-Appstep tugmasini bosing va quyidagi tarkibni kiritish uchun bildirishnoma shablonini tahrirlang.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"{{userId}} added a new to-do.\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">{{<\/span><span style=\"color: #9CDCFE\">userId<\/span><span style=\"color: #D4D4D4\">}} <\/span><span style=\"color: #9CDCFE\">added<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">a<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">to<\/span><span style=\"color: #D4D4D4\">-<\/span><span style=\"color: #9CDCFE\">do<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Novu sizga Handlebars shablonlash mexanizmi yordamida shablonlarga dinamik tarkib yoki ma&#8217;lumotlarni qo&#8217;shish imkonini beradi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Update tugmasini bosish orqali shablonni saqlang va kod muharririga qayting.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ilovaga Novu qo&#8217;shish.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Paketdan Novu-ni import qiling va serverda API kalitingizdan foydalanib namuna yarating.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/server\/index.js\n\nconst { Novu } = require(&quot;@novu\/node&quot;);\nconst novu = new Novu(&quot;<YOUR_API_KEY&gt;&quot;);\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/server\/index.js<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> { <\/span><span style=\"color: #4FC1FF\">Novu<\/span><span style=\"color: #D4D4D4\"> } = <\/span><span style=\"color: #DCDCAA\">require<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;@novu\/node&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">novu<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Novu<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&lt;YOUR_API_KEY&gt;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Novu orqali React ilovasiga bildirishnoma yuboradigan funksiya yarating.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"const sendNotification = async (template_id) =&gt; {\n    try {\n        const result = await novu.trigger(template_id, {\n            to: {\n                subscriberId: <SUBSCRIBER_ID&gt;,\n            },\n        });\n        console.log(result);\n    } catch (err) {\n        console.error(&quot;Error &gt;&gt;&gt;&gt;&quot;, { err });\n    }\n};\n\nsocket.on(&quot;addTodo&quot;, (todo) =&gt; {\n        todoList.unshift(todo);\n        socket.emit(&quot;todos&quot;, todoList);\n\n    \/\/ Novu orqali bildirishnomani ishga tushiradi\n        sendNotification(&quot;<TEMPLATE_ID&gt;&quot;);\n    });\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\"><code><span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">sendNotification<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">async<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">template_id<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">try<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">result<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">novu<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">trigger<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">template_id<\/span><span style=\"color: #D4D4D4\">, {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">to:<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #9CDCFE\">subscriberId:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">SUBSCRIBER_ID<\/span><span style=\"color: #808080\">&gt;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        console.log(result);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    } catch (err) <\/span><span style=\"color: #569CD6\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">error<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Error &gt;&gt;&gt;&gt;&quot;<\/span><span style=\"color: #D4D4D4\">, { <\/span><span style=\"color: #9CDCFE\">err<\/span><span style=\"color: #D4D4D4\"> });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">socket.on(&quot;addTodo&quot;, (todo) =&gt; <\/span><span style=\"color: #569CD6\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">unshift<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">todo<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">socket<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">emit<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;todos&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">todoList<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Novu orqali bildirishnomani ishga tushiradi<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">sendNotification<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;&lt;TEMPLATE_ID&gt;&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1e1e1e;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">JSX<\/span><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Yuqoridagi kod parchasi ilovaga yangi ish qo&#8217;shilganda barcha foydalanuvchilarga bildirishnoma yuboradi.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"880\" height=\"472\" src=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-10.png\" alt=\"\" class=\"wp-image-3540\" srcset=\"https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-10.png 880w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-10-300x161.png 300w, https:\/\/texnokun.uz\/wp-content\/uploads\/2022\/11\/image-10-768x412.png 768w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ishlar jadvali yaratilishini yakunlaganingiz bilan tabriklaymiz!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Xulosa.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hozirgacha siz React va Node.js ilovalarida Socket.io-ni qanday sozlashni va Socket.io orqali server va mijoz o&#8217;rtasida muloqot qilishni o&#8217;rgandingiz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bu Socket.io va React yordamida qurilishi mumkin bo&#8217;lgan oddiy bir ilova. Foydalanuvchi sharh qoldirganda autentifikatsiya, real vaqtda ma\u02bclumotlar bazasi va Novu orqali bildirishnomalarni qo\u02bbshish orqali ilovani yaxshilash mumkin.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ushbu maqolada siz React.js va Socket.io-dan foydalanib jamoaviy ishlar ro&#8217;yxatini qanday yaratishni o&#8217;rganasiz. Foydalanuvchilar Socket.io orqali ishlarni yaratish, o\u2018qish va o\u2018chirish, shuningdek, har bir ishga izoh qo\u2018shish imkoniyatiga ega bo\u2018ladi. Vazifalar yaratilganda yoki o\u02bbchirilganda, ilova bildirishnoma jo\u2019natadigan qilishni ham o\u02bbrganasiz.<\/p>\n","protected":false},"author":1,"featured_media":3541,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"footnotes":""},"categories":[14],"tags":[72,71,70],"class_list":["post-3528","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dasturlash","tag-reactjs","tag-soketio","tag-websoket"],"_links":{"self":[{"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/posts\/3528","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/texnokun.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3528"}],"version-history":[{"count":5,"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/posts\/3528\/revisions"}],"predecessor-version":[{"id":5343,"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/posts\/3528\/revisions\/5343"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/texnokun.uz\/index.php?rest_route=\/wp\/v2\/media\/3541"}],"wp:attachment":[{"href":"https:\/\/texnokun.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3528"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/texnokun.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3528"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/texnokun.uz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}