{"id":103020,"date":"2025-03-25T01:52:41","date_gmt":"2025-03-24T21:22:41","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/"},"modified":"2025-03-25T01:52:41","modified_gmt":"2025-03-24T21:22:41","slug":"next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/","title":{"rendered":"Next.js 15 \u0631\u0641\u062a\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634: \u06cc\u06a9 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639"},"content":{"rendered":"<div data-article-id=\"2352451\" id=\"article-body\">\n<p>Next.JS 15 \u067e\u06cc\u0634\u0631\u0641\u062a \u0647\u0627\u06cc \u0686\u0634\u0645\u06af\u06cc\u0631\u06cc \u0631\u0627 \u062f\u0631 \u06a9\u0646\u062a\u0631\u0644 \u0631\u0641\u062a\u0627\u0631 \u0646\u0627\u0648\u0628\u0631\u06cc \u0648 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f \u0648 \u0628\u0647 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0631\u06cc\u0632 \u0648 \u062f\u0631\u0634\u062a \u062a\u0631 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0635\u0627\u0641 \u0645\u06cc \u062f\u0647\u062f. \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u062f\u0631 \u0627\u0639\u0645\u0627\u0642 \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627 \u063a\u0631\u0642 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0628\u062a\u062f\u06cc\u0627\u0646 \u0648 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D8%AF%D8%B1%DA%A9_%D8%B1%D9%81%D8%AA%D8%A7%D8%B1_%D9%BE%DB%8C%D9%85%D8%A7%DB%8C%D8%B4_%D8%AF%D8%B1_Nextjs\" >\u062f\u0631\u06a9 \u0631\u0641\u062a\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u062f\u0631 Next.js<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B3%D8%A7%D8%B3%DB%8C_scroll_%D8%BA%D8%B1%D9%81%D9%87\" >\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u0627\u0633\u06cc: scroll \u063a\u0631\u0641\u0647<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D8%A8%D8%A7_%D9%85%D8%A4%D9%84%D9%81%D9%87_%D9%BE%DB%8C%D9%88%D9%86%D8%AF\" >\u0628\u0627 \u0645\u0624\u0644\u0641\u0647 \u067e\u06cc\u0648\u0646\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D8%A8%D8%A7_%D9%86%D8%A7%D9%88%D8%A8%D8%B1%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%A7%DB%8C\" >\u0628\u0627 \u0646\u0627\u0648\u0628\u0631\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D9%85%D9%88%D8%A7%D8%B1%D8%AF_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87\" >\u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C_%D9%BE%DB%8C%D9%85%D8%A7%DB%8C%D8%B4_%D8%A8%DB%8C_%D9%86%D9%87%D8%A7%DB%8C%D8%AA\" >\u0627\u062c\u0631\u0627\u06cc \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0628\u06cc \u0646\u0647\u0627\u06cc\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D8%A7%D8%B4%DA%A9%D8%A7%D9%84_%DA%86%D9%86%D8%AF_%D9%85%D8%B1%D8%AD%D9%84%D9%87_%D8%A7%DB%8C\" >\u0627\u0634\u06a9\u0627\u0644 \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647 \u0627\u06cc<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D8%A8%D9%87_%D8%B9%D9%86%D8%A7%D8%B5%D8%B1_%D8%AE%D8%A7%D8%B5_%D8%A8%D8%B1%D9%88%DB%8C%D8%AF\" >\u0628\u0647 \u0639\u0646\u0627\u0635\u0631 \u062e\u0627\u0635 \u0628\u0631\u0648\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D9%BE%DB%8C%D8%A7%D9%85%D8%AF%D9%87%D8%A7%DB%8C_%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF\" >\u067e\u06cc\u0627\u0645\u062f\u0647\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86_%D8%B1%D9%88%D8%B4%D9%87%D8%A7\" >\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u0647\u0627<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%DA%86%D9%87_%D8%B2%D9%85%D8%A7%D9%86%DB%8C_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF_scrollfalse\" >\u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f scroll={false}<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%DA%86%D9%87_%D9%85%D9%88%D9%82%D8%B9_%D8%A8%D8%A7%DB%8C%D8%AF_%D8%B1%D9%81%D8%AA%D8%A7%D8%B1_%D9%BE%DB%8C%D9%85%D8%A7%DB%8C%D8%B4_%D9%BE%DB%8C%D8%B4_%D9%81%D8%B1%D8%B6_%D8%B1%D8%A7_%D8%AD%D9%81%D8%B8_%DA%A9%D9%86%DB%8C%D9%85\" >\u0686\u0647 \u0645\u0648\u0642\u0639 \u0628\u0627\u06cc\u062f \u0631\u0641\u062a\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0631\u0627 \u062d\u0641\u0638 \u06a9\u0646\u06cc\u0645<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D8%B3%D8%A7%D8%B2%DA%AF%D8%A7%D8%B1%DB%8C_%D9%85%D8%B1%D9%88%D8%B1%DA%AF%D8%B1\" >\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0645\u0631\u0648\u0631\u06af\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D9%85%D8%B1%D9%85%D8%AA_%D9%BE%DB%8C%D9%85%D8%A7%DB%8C%D8%B4_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C\" >\u0645\u0631\u0645\u062a \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0633\u0641\u0627\u0631\u0634\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D8%A7%D8%AF%D8%BA%D8%A7%D9%85_%D8%A8%D8%A7_%D8%B3%D8%A7%DB%8C%D8%B1_%D9%88%DB%8C%DA%98%DA%AF%DB%8C_%D9%87%D8%A7%DB%8C_Nextjs\" >\u0627\u062f\u063a\u0627\u0645 \u0628\u0627 \u0633\u0627\u06cc\u0631 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc Next.js<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D8%A8%D8%A7_%D8%A7%D8%AC%D8%B2%D8%A7%DB%8C_%D8%B3%D8%B1%D9%88%D8%B1\" >\u0628\u0627 \u0627\u062c\u0632\u0627\u06cc \u0633\u0631\u0648\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D8%A8%D8%A7_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AA%D8%B9%D9%84%DB%8C%D9%82_%D9%88_%D8%A8%D8%A7%D8%B1%DA%AF%DB%8C%D8%B1%DB%8C\" >\u0628\u0627 \u062d\u0627\u0644\u062a \u062a\u0639\u0644\u06cc\u0642 \u0648 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/nabfollower.com\/blog\/next-js-15-%d8%b1%d9%81%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d9%85%d8%a7%db%8c%d8%b4-%db%8c%da%a9-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9\/#%D9%BE%D8%A7%DB%8C%D8%A7%D9%86\" >\u067e\u0627\u06cc\u0627\u0646<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B1%DA%A9_%D8%B1%D9%81%D8%AA%D8%A7%D8%B1_%D9%BE%DB%8C%D9%85%D8%A7%DB%8C%D8%B4_%D8%AF%D8%B1_Nextjs\"><\/span>\n<p>  \u062f\u0631\u06a9 \u0631\u0641\u062a\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u062f\u0631 Next.js<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0632 \u0646\u0638\u0631 \u062a\u0627\u0631\u06cc\u062e\u06cc \u060c \u0686\u0627\u0631\u0686\u0648\u0628 \u0647\u0627\u06cc \u0648\u0628 \u0647\u0646\u06af\u0627\u0645 \u062d\u0631\u06a9\u062a \u0628\u06cc\u0646 \u0645\u0633\u06cc\u0631\u0647\u0627 \u0628\u0647 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0628\u0647 \u0628\u0627\u0644\u0627\u06cc \u0635\u0641\u062d\u0647 \u067e\u0631\u062f\u0627\u062e\u062a\u0647 \u0627\u0646\u062f. \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0641\u062a\u0627\u0631 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0633\u0646\u062a\u06cc \u0686\u0646\u062f \u0635\u0641\u062d\u0647 \u0627\u06cc \u0645\u0639\u0646\u0627 \u067e\u06cc\u062f\u0627 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0648\u0628 \u0645\u062f\u0631\u0646 \u0627\u063a\u0644\u0628 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0646\u062a\u0631\u0644 \u0638\u0631\u06cc\u0641 \u062a\u0631\u06cc \u0628\u0631 \u0645\u0648\u0642\u0639\u06cc\u062a \u067e\u06cc\u0645\u0627\u06cc\u0634 \u062f\u0627\u0631\u0646\u062f.<\/p>\n<p>next.js 15 \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0627 \u062c\u062f\u06cc\u062f \u0645\u06cc \u067e\u0631\u062f\u0627\u0632\u062f <code>scroll<\/code> \u062e\u0627\u0635\u06cc\u062a \u060c \u06a9\u0647 \u0628\u0647 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u06a9\u0646\u062a\u0631\u0644 \u0635\u0631\u06cc\u062d \u0628\u0631 \u062a\u0631\u0645\u06cc\u0645 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0646\u0627\u0648\u0628\u0631\u06cc \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B3%D8%A7%D8%B3%DB%8C_scroll_%D8%BA%D8%B1%D9%81%D9%87\"><\/span>\n<p>  \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u0627\u0633\u06cc: <code>scroll<\/code> \u063a\u0631\u0641\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7_%D9%85%D8%A4%D9%84%D9%81%D9%87_%D9%BE%DB%8C%D9%88%D9%86%D8%AF\"><\/span>\n<p>  \u0628\u0627 \u0645\u0624\u0644\u0641\u0647 \u067e\u06cc\u0648\u0646\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0633\u0627\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0631\u0641\u062a\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0627\u0632 \u0637\u0631\u06cc\u0642 <code>Link<\/code> \u0645\u0624\u0644\u0641\u0647:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"k\">import<\/span> <span class=\"nx\">Link<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/link<\/span><span class=\"dl\">'<\/span>\n\n<span class=\"c1\">\/\/ Default behavior: scrolls to top<\/span>\n<span class=\"o\">&lt;<\/span><span class=\"nx\">Link<\/span> <span class=\"nx\">href<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/products<\/span><span class=\"dl\">\"<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">View<\/span> <span class=\"nx\">Products<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/Link<\/span><span class=\"err\">&gt;\n<\/span>\n<span class=\"c1\">\/\/ Prevents scrolling to top<\/span>\n<span class=\"o\">&lt;<\/span><span class=\"nx\">Link<\/span> <span class=\"nx\">href<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/products<\/span><span class=\"dl\">\"<\/span> <span class=\"nx\">scroll<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"kc\">false<\/span><span class=\"p\">}<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">View<\/span> <span class=\"nx\">Products<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/Link<\/span><span class=\"err\">&gt;\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06a9\u06cc <code>scroll={false}<\/code> \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0627\u0633\u062a \u060c Next.js \u0645\u0648\u0642\u0639\u06cc\u062a \u067e\u06cc\u0645\u0627\u06cc\u0634 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u067e\u0633 \u0627\u0632 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u06cc\u06a9 \u062a\u062c\u0631\u0628\u0647 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7_%D9%86%D8%A7%D9%88%D8%A8%D8%B1%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%A7%DB%8C\"><\/span>\n<p>  \u0628\u0627 \u0646\u0627\u0648\u0628\u0631\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0627\u0648\u0628\u0631\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc \u060c <code>scroll<\/code> \u06af\u0632\u06cc\u0646\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0648\u062a\u0631 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useRouter<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/navigation<\/span><span class=\"dl\">'<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">FilterProducts<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">router<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRouter<\/span><span class=\"p\">()<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">applyFilter<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">filter<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Maintain scroll position when applying filters<\/span>\n    <span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">push<\/span><span class=\"p\">(<\/span><span class=\"s2\">`\/products?category=<\/span><span class=\"p\">${<\/span><span class=\"nx\">filter<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"na\">scroll<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span> <span class=\"p\">})<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span> <span class=\"na\">onClick<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">applyFilter<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">electronics<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n      Filter by Electronics\n    <span class=\"p\"\/><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%88%D8%A7%D8%B1%D8%AF_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87\"><\/span>\n<p>  \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C_%D9%BE%DB%8C%D9%85%D8%A7%DB%8C%D8%B4_%D8%A8%DB%8C_%D9%86%D9%87%D8%A7%DB%8C%D8%AA\"><\/span>\n<p>  \u0627\u062c\u0631\u0627\u06cc \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0628\u06cc \u0646\u0647\u0627\u06cc\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 <code>scroll={false}<\/code> \u06af\u0632\u06cc\u0646\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0628\u06cc \u0646\u0647\u0627\u06cc\u062a \u0645\u06cc \u062f\u0631\u062e\u0634\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useEffect<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useState<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useRouter<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/navigation<\/span><span class=\"dl\">'<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">InfiniteProductList<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">page<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setPage<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">products<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setProducts<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">([])<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">router<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRouter<\/span><span class=\"p\">()<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">loadMore<\/span> <span class=\"o\">=<\/span> <span class=\"k\">async <\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">newPage<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">page<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span>\n    <span class=\"c1\">\/\/ Update URL to reflect new page without scrolling<\/span>\n    <span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">push<\/span><span class=\"p\">(<\/span><span class=\"s2\">`\/products?page=<\/span><span class=\"p\">${<\/span><span class=\"nx\">newPage<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"na\">scroll<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span> <span class=\"p\">})<\/span>\n\n    <span class=\"c1\">\/\/ Fetch more products<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">newProducts<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">fetchProducts<\/span><span class=\"p\">(<\/span><span class=\"nx\">newPage<\/span><span class=\"p\">)<\/span>\n    <span class=\"nf\">setProducts<\/span><span class=\"p\">([...<\/span><span class=\"nx\">products<\/span><span class=\"p\">,<\/span> <span class=\"p\">...<\/span><span class=\"nx\">newProducts<\/span><span class=\"p\">])<\/span>\n    <span class=\"nf\">setPage<\/span><span class=\"p\">(<\/span><span class=\"nx\">newPage<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"c1\">\/\/ Intersection Observer to detect when user reaches bottom<\/span>\n  <span class=\"nf\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Implementation details...<\/span>\n  <span class=\"p\">},<\/span> <span class=\"p\">[])<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"si\">{<\/span><span class=\"nx\">products<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">(<\/span><span class=\"nx\">product<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">ProductCard<\/span> <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">product<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span><span class=\"si\">}<\/span> <span class=\"na\">product<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">product<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n      <span class=\"p\">))<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span> <span class=\"na\">ref<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">observerRef<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>Loading more...<span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B4%DA%A9%D8%A7%D9%84_%DA%86%D9%86%D8%AF_%D9%85%D8%B1%D8%AD%D9%84%D9%87_%D8%A7%DB%8C\"><\/span>\n<p>  \u0627\u0634\u06a9\u0627\u0644 \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647 \u0627\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0634\u06a9\u0627\u0644 \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647 \u0627\u06cc \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0632\u0645\u06cc\u0646\u0647 \u062d\u0641\u0638 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">function<\/span> <span class=\"nf\">CheckoutProcess<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">router<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRouter<\/span><span class=\"p\">()<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">formData<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setFormData<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">({})<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">goToNextStep<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">step<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Save current form data<\/span>\n    <span class=\"nx\">localStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">setItem<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">checkout-data<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">formData<\/span><span class=\"p\">))<\/span>\n\n    <span class=\"c1\">\/\/ Navigate to next step without scrolling to top<\/span>\n    <span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">push<\/span><span class=\"p\">(<\/span><span class=\"s2\">`\/checkout\/step-<\/span><span class=\"p\">${<\/span><span class=\"nx\">step<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"na\">scroll<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span> <span class=\"p\">})<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">form<\/span> <span class=\"na\">onSubmit<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">goToNextStep<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"si\">{<\/span><span class=\"cm\">\/* Form fields *\/<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span> <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"submit\"<\/span><span class=\"p\">&gt;<\/span>Continue to Shipping<span class=\"p\"\/><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\"\/><span class=\"nt\">form<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D9%87_%D8%B9%D9%86%D8%A7%D8%B5%D8%B1_%D8%AE%D8%A7%D8%B5_%D8%A8%D8%B1%D9%88%DB%8C%D8%AF\"><\/span>\n<p>  \u0628\u0647 \u0639\u0646\u0627\u0635\u0631 \u062e\u0627\u0635 \u0628\u0631\u0648\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 <code>scroll={false}<\/code> \u0627\u0632 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0647 \u0628\u0627\u0644\u0627 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f \u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u062e\u0648\u0627\u0647\u06cc\u062f \u067e\u0633 \u0627\u0632 \u0646\u0627\u0648\u0628\u0631\u06cc \u0628\u0647 \u0639\u0646\u0627\u0635\u0631 \u062e\u0627\u0635 \u0628\u0631\u0648\u06cc\u062f. \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0648\u06cc\u0698\u06af\u06cc \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0631\u0627 \u0628\u0627 <code>useEffect<\/code> \u0642\u0644\u0627\u0628:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useEffect<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useRef<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useSearchParams<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/navigation<\/span><span class=\"dl\">'<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">ProductPage<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">reviewsRef<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRef<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">)<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">searchParams<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useSearchParams<\/span><span class=\"p\">()<\/span>\n\n  <span class=\"nf\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Check if we should scroll to reviews section<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">section<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">reviews<\/span><span class=\"dl\">'<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">reviewsRef<\/span><span class=\"p\">.<\/span><span class=\"nx\">current<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">reviewsRef<\/span><span class=\"p\">.<\/span><span class=\"nx\">current<\/span><span class=\"p\">.<\/span><span class=\"nf\">scrollIntoView<\/span><span class=\"p\">({<\/span> \n        <span class=\"na\">behavior<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">smooth<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n        <span class=\"na\">block<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">start<\/span><span class=\"dl\">'<\/span>\n      <span class=\"p\">})<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">},<\/span> <span class=\"p\">[<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">])<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nc\">ProductDetails<\/span> <span class=\"p\">\/&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span> <span class=\"na\">ref<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">reviewsRef<\/span><span class=\"si\">}<\/span> <span class=\"na\">id<\/span><span class=\"p\">=<\/span><span class=\"s\">\"reviews\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">h2<\/span><span class=\"p\">&gt;<\/span>Customer Reviews<span class=\"p\"\/><span class=\"nt\">h2<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"si\">{<\/span><span class=\"cm\">\/* Reviews content *\/<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%A7%D9%85%D8%AF%D9%87%D8%A7%DB%8C_%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF\"><\/span>\n<p>  \u067e\u06cc\u0627\u0645\u062f\u0647\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>API \u0631\u0641\u062a\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u062f\u0631 Next.js 15 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0624\u062b\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f \u060c \u0627\u0645\u0627 \u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<ol>\n<li>\n<p><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062d\u0627\u0641\u0638\u0647<\/strong>: \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 <code>scroll={false}<\/code>\u060c next.js \u0628\u0627\u06cc\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0648\u0644\u062a\u06cc \u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0648\u0642\u0639\u06cc\u062a \u067e\u06cc\u0645\u0627\u06cc\u0634 \u062d\u0641\u0638 \u06a9\u0646\u062f \u060c \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u06a9\u0645\u06cc \u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u0631\u0627 \u0645\u0635\u0631\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0628\u0627\u0631 \u0635\u0641\u062d\u0647 \u0627\u0648\u0644\u06cc\u0647<\/strong>: <code>scroll<\/code> PROP \u0641\u0642\u0637 \u0628\u0631 \u0646\u0627\u0648\u0628\u0631\u06cc \u0628\u06cc\u0646 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u062a\u0623\u062b\u06cc\u0631 \u0645\u06cc \u06af\u0630\u0627\u0631\u062f \u060c \u0646\u0647 \u0628\u0627\u0631 \u0627\u0648\u0644\u06cc\u0647 \u0635\u0641\u062d\u0647.<\/p>\n<\/li>\n<li>\n<p><strong>\u0686\u06cc\u062f\u0645\u0627\u0646 \u0647\u0627\u06cc \u062a\u0648 \u062f\u0631 \u062a\u0648<\/strong>: \u062f\u0631 \u0631\u0648\u062a\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u060c \u0627\u06cc\u0646 \u0631\u0641\u062a\u0627\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f \u0628\u062e\u0634 \u0647\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u06cc\u0627\u0641\u062a\u0647 \u0645\u0633\u06cc\u0631 \u060c \u0628\u0627 \u0627\u062d\u062a\u0631\u0627\u0645 \u0628\u0647 \u0633\u0627\u062e\u062a\u0627\u0631 \u0637\u0631\u062d \u0628\u0646\u062f\u06cc \u062a\u0648 \u062f\u0631 \u062a\u0648 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86_%D8%B1%D9%88%D8%B4%D9%87%D8%A7\"><\/span>\n<p>  \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%DA%86%D9%87_%D8%B2%D9%85%D8%A7%D9%86%DB%8C_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF_scrollfalse\"><\/span>\n<p>  \u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>scroll={false}<\/code><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\u0641\u06cc\u0644\u062a\u0631 \u06cc\u0627 \u0645\u0631\u062a\u0628 \u0633\u0627\u0632\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0632\u0645\u06cc\u0646\u0647 \u062d\u0641\u0638 \u0645\u0647\u0645 \u0627\u0633\u062a<\/li>\n<li>\u0631\u0627\u0628\u0637 \u0647\u0627\u06cc Tabbed \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0645\u062d\u062a\u0648\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0627\u0645\u0627 \u0637\u0631\u062d \u06cc\u06a9\u0633\u0627\u0646 \u0627\u0633\u062a<\/li>\n<li>\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0628\u06cc \u0646\u0647\u0627\u06cc\u062a<\/li>\n<li>\u0641\u0631\u0645 \u0647\u0627\u06cc \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647 \u0627\u06cc \u06cc\u0627 \u062c\u0627\u062f\u0648\u06af\u0631\u0627\u0646<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%DA%86%D9%87_%D9%85%D9%88%D9%82%D8%B9_%D8%A8%D8%A7%DB%8C%D8%AF_%D8%B1%D9%81%D8%AA%D8%A7%D8%B1_%D9%BE%DB%8C%D9%85%D8%A7%DB%8C%D8%B4_%D9%BE%DB%8C%D8%B4_%D9%81%D8%B1%D8%B6_%D8%B1%D8%A7_%D8%AD%D9%81%D8%B8_%DA%A9%D9%86%DB%8C%D9%85\"><\/span>\n<p>  \u0686\u0647 \u0645\u0648\u0642\u0639 \u0628\u0627\u06cc\u062f \u0631\u0641\u062a\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0631\u0627 \u062d\u0641\u0638 \u06a9\u0646\u06cc\u0645<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\u0645\u0633\u06cc\u0631 \u0627\u0635\u0644\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc \u062c\u062f\u06cc\u062f \u0628\u0627\u06cc\u062f \u0627\u0632 \u0628\u0627\u0644\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0634\u0648\u062f<\/li>\n<li>\u0647\u0646\u06af\u0627\u0645 \u0627\u0646\u062a\u0642\u0627\u0644 \u0628\u06cc\u0646 \u0628\u062e\u0634\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627<\/li>\n<li>\u0628\u0647 \u062f\u0644\u0627\u06cc\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u060c \u0648\u0642\u062a\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u0646\u062f \u0627\u0632 \u0628\u0627\u0644\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u0646\u062f<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B3%D8%A7%D8%B2%DA%AF%D8%A7%D8%B1%DB%8C_%D9%85%D8%B1%D9%88%D8%B1%DA%AF%D8%B1\"><\/span>\n<p>  \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0645\u0631\u0648\u0631\u06af\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>NEXT.JS \u06a9\u0646\u062a\u0631\u0644 \u0631\u0641\u062a\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u062f\u0631 \u062a\u0645\u0627\u0645 \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0632 API History \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u062a\u0631 \u0628\u0647 \u0637\u0631\u0632 \u0641\u062c\u06cc\u0639\u06cc \u0628\u0627\u0632 \u0645\u06cc \u06af\u0631\u062f\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D9%85%D8%AA_%D9%BE%DB%8C%D9%85%D8%A7%DB%8C%D8%B4_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C\"><\/span>\n<p>  \u0645\u0631\u0645\u062a \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0633\u0641\u0627\u0631\u0634\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u062e\u0648\u0627\u0647\u06cc\u062f \u0645\u0646\u0637\u0642 \u062a\u0631\u0645\u06cc\u0645 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"dl\">'<\/span><span class=\"s1\">use client<\/span><span class=\"dl\">'<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useEffect<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">usePathname<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useSearchParams<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/navigation<\/span><span class=\"dl\">'<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">ScrollRestorationManager<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">pathname<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">usePathname<\/span><span class=\"p\">()<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">searchParams<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useSearchParams<\/span><span class=\"p\">()<\/span>\n\n  <span class=\"nf\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Save current scroll position for this route<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">saveScrollPosition<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"kd\">const<\/span> <span class=\"nx\">positions<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">parse<\/span><span class=\"p\">(<\/span><span class=\"nx\">sessionStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">getItem<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">scrollPositions<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">{}<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n      <span class=\"nx\">positions<\/span><span class=\"p\">[<\/span><span class=\"nx\">pathname<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">searchParams<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()]<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">scrollY<\/span>\n      <span class=\"nx\">sessionStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">setItem<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">scrollPositions<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">positions<\/span><span class=\"p\">))<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c1\">\/\/ Restore scroll position if available<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">restoreScrollPosition<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"kd\">const<\/span> <span class=\"nx\">positions<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">parse<\/span><span class=\"p\">(<\/span><span class=\"nx\">sessionStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">getItem<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">scrollPositions<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">{}<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n      <span class=\"kd\">const<\/span> <span class=\"nx\">savedPosition<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">positions<\/span><span class=\"p\">[<\/span><span class=\"nx\">pathname<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">searchParams<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()]<\/span>\n\n      <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">savedPosition<\/span> <span class=\"o\">!==<\/span> <span class=\"kc\">undefined<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nf\">scrollTo<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"nx\">savedPosition<\/span><span class=\"p\">)<\/span>\n      <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c1\">\/\/ Add event listeners<\/span>\n    <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nf\">addEventListener<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">beforeunload<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">saveScrollPosition<\/span><span class=\"p\">)<\/span>\n    <span class=\"nf\">restoreScrollPosition<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"k\">return <\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nf\">removeEventListener<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">beforeunload<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">saveScrollPosition<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">},<\/span> <span class=\"p\">[<\/span><span class=\"nx\">pathname<\/span><span class=\"p\">,<\/span> <span class=\"nx\">searchParams<\/span><span class=\"p\">])<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"kc\">null<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0645\u0624\u0644\u0641\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0637\u0631\u062d \u0634\u0645\u0627 \u06af\u0646\u062c\u0627\u0646\u062f\u0647 \u0634\u0648\u062f \u062a\u0627 \u0645\u0631\u0645\u062a \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u062f\u0631 \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AF%D8%BA%D8%A7%D9%85_%D8%A8%D8%A7_%D8%B3%D8%A7%DB%8C%D8%B1_%D9%88%DB%8C%DA%98%DA%AF%DB%8C_%D9%87%D8%A7%DB%8C_Nextjs\"><\/span>\n<p>  \u0627\u062f\u063a\u0627\u0645 \u0628\u0627 \u0633\u0627\u06cc\u0631 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc Next.js<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7_%D8%A7%D8%AC%D8%B2%D8%A7%DB%8C_%D8%B3%D8%B1%D9%88%D8%B1\"><\/span>\n<p>  \u0628\u0627 \u0627\u062c\u0632\u0627\u06cc \u0633\u0631\u0648\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 <code>scroll<\/code> \u0639\u0645\u0644\u06a9\u0631\u062f PROP \u0628\u0647 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0633\u0645\u062a \u0645\u0634\u062a\u0631\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f. \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0624\u0644\u0641\u0647 \u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u060c \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0631\u0641\u062a\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u0624\u0644\u0641\u0647 \u0645\u0634\u062a\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ ServerComponent.jsx<\/span>\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">ProductList<\/span><span class=\"p\">({<\/span> <span class=\"nx\">products<\/span> <span class=\"p\">})<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"si\">{<\/span><span class=\"nx\">products<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">(<\/span><span class=\"nx\">product<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">ProductItem<\/span> <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">product<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span><span class=\"si\">}<\/span> <span class=\"na\">product<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">product<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n      <span class=\"p\">))<\/span><span class=\"si\">}<\/span>\n    <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\">\/\/ ClientWrapper.jsx<\/span>\n<span class=\"dl\">'<\/span><span class=\"s1\">use client<\/span><span class=\"dl\">'<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useRouter<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/navigation<\/span><span class=\"dl\">'<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">ProductList<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/ServerComponent<\/span><span class=\"dl\">'<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">ProductListWrapper<\/span><span class=\"p\">({<\/span> <span class=\"nx\">products<\/span> <span class=\"p\">})<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">router<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRouter<\/span><span class=\"p\">()<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">handleProductFilter<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">category<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">push<\/span><span class=\"p\">(<\/span><span class=\"s2\">`\/products?category=<\/span><span class=\"p\">${<\/span><span class=\"nx\">category<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"na\">scroll<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span> <span class=\"p\">})<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"filters\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span> <span class=\"na\">onClick<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">handleProductFilter<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">electronics<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>Electronics<span class=\"p\"\/><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span> <span class=\"na\">onClick<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">handleProductFilter<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">clothing<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>Clothing<span class=\"p\"\/><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nc\">ProductList<\/span> <span class=\"na\">products<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">products<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n    <span class=\"p\">&gt;<\/span>\n  <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AA%D8%B9%D9%84%DB%8C%D9%82_%D9%88_%D8%A8%D8%A7%D8%B1%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  \u0628\u0627 \u062d\u0627\u0644\u062a \u062a\u0639\u0644\u06cc\u0642 \u0648 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0631\u0641\u062a\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0628\u0647 \u062e\u0648\u0628\u06cc \u0628\u0627 \u0645\u0631\u0632\u0647\u0627\u06cc \u062a\u0639\u0644\u06cc\u0642 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0645\u0648\u0642\u0639\u06cc\u062a \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0631\u0627 \u062d\u062a\u06cc \u062f\u0631 \u0635\u0648\u0631\u062a \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u062d\u062a\u0648\u0627 \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">Suspense<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">LoadingSpinner<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/components\/LoadingSpinner<\/span><span class=\"dl\">'<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">ProductList<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/components\/ProductList<\/span><span class=\"dl\">'<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">ProductsPage<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">h1<\/span><span class=\"p\">&gt;<\/span>Products<span class=\"p\"\/><span class=\"nt\">h1<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nc\">Suspense<\/span> <span class=\"na\">fallback<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">&lt;<\/span><span class=\"nc\">LoadingSpinner<\/span> <span class=\"p\">\/&gt;<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">ProductList<\/span> <span class=\"p\">\/&gt;<\/span>\n      <span class=\"p\"\/><span class=\"nc\">Suspense<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%D8%A7%DB%8C%D8%A7%D9%86\"><\/span>\n<p>  \u067e\u0627\u06cc\u0627\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Next.JS 15 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0631\u0641\u062a\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0631\u0627\u0647\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u0646\u0627\u0648\u0628\u0631\u06cc \u0628\u0635\u0631\u06cc \u062a\u0631 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>scroll<\/code> \u062f\u0631 \u0647\u0631 \u062f\u0648 <code>Link<\/code> \u0646\u0627\u0648\u0628\u0631\u06cc \u0645\u0624\u0644\u0641\u0647 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc \u060c \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u062a\u0639\u0627\u0645\u0644 \u0635\u0627\u0641 \u0648 \u062d\u0641\u0638 \u0632\u0645\u06cc\u0646\u0647 \u0627\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0646\u062f \u06a9\u0647 \u0645\u0648\u0642\u0639\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u062f\u0631 \u0635\u0648\u0631\u062a \u0644\u0632\u0648\u0645 \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u06a9\u0647 \u0622\u06cc\u0627 \u0634\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0633\u0627\u06cc\u062a \u062a\u062c\u0627\u0631\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9\u06cc \u0628\u0627 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u062d\u0635\u0648\u0644 \u0646\u0627\u0645\u062d\u062f\u0648\u062f \u060c \u0641\u0631\u0645 \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647 \u0627\u06cc \u0647\u0633\u062a\u06cc\u062f \u06cc\u0627 \u0641\u0642\u0637 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u062d\u0633\u0627\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u0628\u062e\u0634\u06cc\u062f \u060c \u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u060c \u0633\u0637\u062d \u06a9\u0646\u062a\u0631\u0644 \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f.<\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0648\u0628 \u0647\u0645\u0686\u0646\u0627\u0646 \u0628\u0647 \u0633\u0645\u062a \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627\u0646\u0646\u062f \u062a\u06a9\u0627\u0645\u0644 \u0645\u06cc \u06cc\u0627\u0628\u0646\u062f \u060c \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u06a9\u0646\u062a\u0631\u0644 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0628\u0631\u0627\u06cc \u062d\u0641\u0638 \u0632\u0645\u06cc\u0646\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0627\u06cc\u062c\u0627\u062f \u0627\u0646\u062a\u0642\u0627\u0644 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0628\u06cc\u0646 \u062d\u0627\u0644\u062a\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0641\u0632\u0627\u06cc\u0646\u062f\u0647 \u0627\u06cc \u0627\u0647\u0645\u06cc\u062a \u0645\u06cc \u06cc\u0627\u0628\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Next.JS 15 \u067e\u06cc\u0634\u0631\u0641\u062a \u0647\u0627\u06cc \u0686\u0634\u0645\u06af\u06cc\u0631\u06cc \u0631\u0627 \u062f\u0631 \u06a9\u0646\u062a\u0631\u0644 \u0631\u0641\u062a\u0627\u0631 \u0646\u0627\u0648\u0628\u0631\u06cc \u0648 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f \u0648 \u0628\u0647 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0631\u06cc\u0632 \u0648 \u062f\u0631\u0634\u062a \u062a\u0631 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0635\u0627\u0641 \u0645\u06cc \u062f\u0647\u062f. \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u062f\u0631 \u0627\u0639\u0645\u0627\u0642 \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627 \u063a\u0631\u0642 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0628\u062a\u062f\u06cc\u0627\u0646 \u0648 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f. &hellip;<\/p>\n","protected":false},"author":2,"featured_media":103021,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media2.dev.to\/dynamic\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8r1s7fid5py68az69e97.png","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-103020","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/103020","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=103020"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/103020\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/103021"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=103020"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=103020"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=103020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}