{"id":15321,"date":"2023-03-24T11:59:09","date_gmt":"2023-03-24T10:59:09","guid":{"rendered":"https:\/\/vived.io\/?p=15321"},"modified":"2023-03-24T11:59:12","modified_gmt":"2023-03-24T10:59:12","slug":"react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/","title":{"rendered":"React udaje, \u017ce SPA nie istniej\u0105 | Frontend Weekly vol. 130"},"content":{"rendered":"\n<h2 id=\"1-czy-react-udaje-ze-spa-nie-istnieja\" data-num=1>1. Czy React udaje, \u017ce SPA nie istniej\u0105?<\/h2>\n\n\n\n<p>W poprzedniej edycji naszego raportu podrzucali\u015bmy Wam link do <a href=\"https:\/\/react.dev\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">nowej dokumentacji Reacta<\/a>. Prawie pod wszystkimi wzgl\u0119dami jest ona lepsza od starej dokumentacji. Jest napisana z my\u015bl\u0105 o hookach, zawiera interaktywne przyk\u0142ady i pokrywa wiele temat\u00f3w, kt\u00f3rych brakowa\u0142o w poprzedniej wersji. <\/p>\n\n\n\n<p>Premiera nowej dokumentacji nie oby\u0142a si\u0119 jednak bez kontrowersji. Wielu u\u017cytkownik\u00f3w narzeka na brak pokrycia tak wa\u017cnych temat\u00f3w jak testy czy acessability. Najwi\u0119cej dyskusji wzbudzi\u0142a jednak strona \u201c<a href=\"https:\/\/react.dev\/learn\/start-a-new-react-project\" target=\"_blank\" rel=\"noreferrer noopener\">Start a New React Project<\/a>\u201d. Zgodnie z oczekiwaniami spo\u0142eczno\u015bci, nie wspomina ona ju\u017c o przestarza\u0142ym i niewspieranym Create React App. Zamiast tego opisuje ona jak wystartowa\u0107 projekt z Next.js, Remix czy Gatsby. I w tym miejscu zaczynaj\u0105 si\u0119 kontrowersje. Dokumentacja sprowadza aplikacje napisane bez frameworku do nielicznych i bardzo specyficznych przypadk\u00f3w brzegowych. Ba! Gdzie tylko to mo\u017cliwe dokumentacja odradza rozwijanie aplikacji w ten spos\u00f3b.<\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\"><p lang=\"en\" dir=\"ltr\">For those looking for a mention of Vite: it&#39;s hidden inside the expanded details under &quot;Can I use React without a Framework?&quot;<br><br>It seems the React team really don&#39;t want you to use React without a framework anymore.<\/p>&mdash; Evan You (@youyuxi) <a href=\"https:\/\/twitter.com\/youyuxi\/status\/1636536302878478336?ref_src=twsrc%5Etfw\">March 17, 2023<\/a><\/blockquote><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script>\n<\/div><\/figure>\n\n\n\n<p>Z jednej strony podej\u015bcie takie mo\u017ce wydawa\u0107 si\u0119 rozs\u0105dne. Nowe funkcjonalno\u015bci Reacta takie jak React Server Components nie b\u0119d\u0105 dzia\u0142a\u0107 bez wsparcia frameworku. Podadto, framewrki wprowadzaj\u0105 ustandaryzowane rozwi\u0105zania dla problem\u00f3w takich jak routing czy pobieranie danych. Dzi\u0119ki temu pocz\u0105tkowa konfiguracja staje si\u0119 du\u017co prostsza i nie wymaga podj\u0119cia wielu trudnych technicznych decyzji. <\/p>\n\n\n\n<p>Z drugiej strony, React od lat szczyci\u0142 si\u0119 byciem tylko bibliotek\u0105 do kt\u00f3rej odpowiednie klocki mo\u017cna dok\u0142ada\u0107 wedle w\u0142asnych potrzeb. Wielu zwraca te\u017c uwag\u0119, \u017c\u0119 wykorzystanie skomplikowanego frameworku do stworzenia na przyk\u0142ad prostego dashboardu, to strzelanie z armaty do muchy. Inaczej m\u00f3wi\u0105c, Reactowa aplikacja bez frameworku to wci\u0105\u017c popularny przypadek u\u017cycia, a nie tylko specyficzny przypadek brzegowy.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"577\" height=\"433\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/download-1.jpeg\" alt=\"\" class=\"wp-image-15327\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/download-1.jpeg 577w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/download-1-300x225.jpeg 300w\" sizes=\"auto, (max-width: 577px) 100vw, 577px\" \/><\/figure><\/div>\n\n\n<p>Je\u015bli chcecie zag\u0142\u0119bi\u0107 si\u0119 w argumenty tej drugiej strony, to CEO .wasp (fullstackowy framework oparty o Reacta) opublikowa\u0142 w tym tygodniu <a href=\"https:\/\/wasp-lang.dev\/blog\/2023\/03\/17\/new-react-docs-pretend-spas-dont-exist\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">\u015bwietny post w kt\u00f3rym zag\u0142\u0119bia si\u0119 w temat<\/a>. <\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\"><p lang=\"und\" dir=\"ltr\">rip <a href=\"https:\/\/t.co\/HqVfgkDCEY\">pic.twitter.com\/HqVfgkDCEY<\/a><\/p>&mdash; trash (@trashh_dev) <a href=\"https:\/\/twitter.com\/trashh_dev\/status\/1636743375956348928?ref_src=twsrc%5Etfw\">March 17, 2023<\/a><\/blockquote><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script>\n<\/div><\/figure>\n\n\n\n<h2 id=\"2-angular-dodaje-wsparcie-dla-required-inputs\" data-num=2>2. Angular dodaje wsparcie dla required Inputs!<\/h2>\n\n\n\n<p>Angular na przestrzeni ostatniego roku zacz\u0105\u0142 rozwija\u0107 si\u0119 z zadziwiaj\u0105c\u0105 pr\u0119dko\u015bci\u0105 i po kolei adresuje najwi\u0119ksze bol\u0105czki deweloper\u00f3w. Pocz\u0105wszy od Standalone Components, przez Strictly Typed Forms i Functional Router Guards, po drobne usprawnienia jak Self Closing Tags czy Default Module Exports. Wszystko wskazuje na to, \u017ce Angular 16 b\u0119dzie kontynuowa\u0142 ten trend. Do najnowszej wersji frameworka  opr\u00f3cz opisywanych przez nas kilka tygodni temu Signals, trafi\u0105 te\u017c Required Inputs. <\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">@Component({\n  selector: &#039;app-test&#039;,\n  template: &#039;&lt;h1&gt;Hello {{name}}&lt;\/h1&gt;&#039;,\n  standalone: true,\n})\nclass MyComponent {\n  @Input({required: true}) name: string;\n}<\/code><\/pre>\n\n\n\n<p>W przypadku kiedy oznaczymy <code>@Input()<\/code> jako required, a nast\u0119pnie w dowolnym miejscu w naszej aplikacji zapomnimy przypisa\u0107 mu warto\u015b\u0107, kompilator wyrzuci adekwatny b\u0142\u0105d. Do tej pory podobne zachowanie mo\u017cna by\u0142o przez kilka sprytnych hack\u00f3w, ale zdecydowanie nie by\u0142o to ani rozwi\u0105zanie intuicyjne, ani czytelne. <\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-typescript\">@Component({\n  selector: &#039;app-test[name]&#039;,\n  template: &#039;&lt;h1&gt;Hello {{name}}&lt;\/h1&gt;&#039;,\n  standalone: true,\n})\nclass MyComponent {\n  @Input() name: string;\n}<\/code><\/pre>\n\n\n\n<p>By\u0107 mo\u017ce Required Inputs nie s\u0105 rewolucj\u0105 na miar\u0119 React Server Components, ale to w\u0142a\u015bnie na braku takich podstawowych funkcjonalno\u015bci Angular cierpia\u0142 najbardziej. Patrz\u0105c holistycznie na zmiany zachodz\u0105ce w Angularze trzeba przyzna\u0107, \u017ce framework wreszcie zaczyna zmierza\u0107 w odpowiednim kierunku.<\/p>\n\n\n\n<h2 id=\"bonus-hooki-ktorych-prawdopodobnie-nie-potrzebujesz\" data-num=3>Bonus: Hooki, kt\u00f3rych prawdopodobnie nie potrzebujesz<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/7foevt.jpeg\" alt=\"\" class=\"wp-image-15323\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/7foevt.jpeg 500w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/7foevt-300x300.jpeg 300w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/7foevt-150x150.jpeg 150w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n<p>Jako, \u017ce miniony tydznie\u0144 nie obfitowa\u0142 w newsy, mamy dla Was ma\u0142y bonus: list\u0119 hook\u00f3w, kt\u00f3rych prawdopodobnie nie b\u0119dziecie potrzebowa\u0107. Artyku\u0142 przygotowany przez Brada Westfalla w detalach opisuje wszystkie ma\u0142opopularne hooki i wyja\u015bnia kiedy mo\u017cecie ich potrzebowa\u0107. Je\u015bli szukacie lektury, do sobotniej porannej kawy, to zdecydowanie polecam!<\/p>\n\n\n\n<p>Hooki, kt\u00f3rych prawdopodobnie nie b\u0119dziecie potrzebowa\u0107:<br>\ud83d\udd34 <code>useDebugValue()<\/code><br>\ud83d\udd34 <code>useInsertionEffect()<\/code><br>\ud83d\udd34 <code>useImperativeHandle()<\/code><br>\ud83d\udfe0 <code>useSyncExternalStore()<\/code><br>\ud83d\udfe0 <code>useDeferredValue()<\/code><br>\ud83d\udfe2 <code>useEffect()<\/code><br>\ud83d\udfe2 <code>useLayoutEffect()<\/code><br><br>\ud83d\udd34 Prawdopodonie nigdy nie u\u017cyjesz tego hooka<br>\ud83d\udfe0 Tego hooka u\u017cyjesz w kilku rzadkich przypadkach<br>\ud83d\udfe2 Tego hooka powinienie\u015b\/powinna\u015b zacz\u0105\u0107 u\u017cywa\u0107 na codzie\u0144<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/reacttraining.com\/blog\/hooks-you-probably-dont-need\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Hooks You Probably Don&#8217;t Need <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>To by\u0142 raczej spokojny tydzie\u0144. Zdominowa\u0142y go dyskusje na temat Reacta ignoruj\u0105cego istnienie SPA oraz Angulara wprowadzaj\u0105cego wymagane Inputs. Bez zb\u0119dnego przed\u0142u\u017cania zapraszamy do kolejnej edycji naszego przegl\u0105du.<\/p>\n","protected":false},"author":12,"featured_media":15330,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[273,1],"tags":[],"class_list":["post-15321","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-frontend-pl","category-no-category"],"acf":{"feature_image_visible":false,"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-3.png","feature_image_blog":{"ID":15332,"id":15332,"title":"grid_0","filename":"grid_0.png","filesize":1898649,"url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/grid_0.png","link":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/grid_0-2\/","alt":"","author":"12","description":"","caption":"","name":"grid_0-2","status":"inherit","uploaded_to":15321,"date":"2023-03-24 10:34:01","modified":"2023-03-24 10:34:01","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/vived.io\/wp-includes\/images\/media\/default.png","width":1536,"height":1024,"sizes":{"thumbnail":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/grid_0-150x150.png","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/grid_0-300x200.png","medium-width":300,"medium-height":200,"medium_large":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/grid_0-768x512.png","medium_large-width":768,"medium_large-height":512,"large":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/grid_0-1024x683.png","large-width":1024,"large-height":683,"1536x1536":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/grid_0.png","1536x1536-width":1536,"1536x1536-height":1024,"2048x2048":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/grid_0.png","2048x2048-width":1536,"2048x2048-height":1024,"gform-image-choice-sm":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/grid_0.png","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":200,"gform-image-choice-md":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/grid_0.png","gform-image-choice-md-width":400,"gform-image-choice-md-height":267,"gform-image-choice-lg":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/grid_0.png","gform-image-choice-lg-width":600,"gform-image-choice-lg-height":400}},"estimated_reading_time":"3"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>React udaje, \u017ce SPA nie istniej\u0105 | Frontend Weekly vol. 130 - Vived<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"React udaje, \u017ce SPA nie istniej\u0105 | Frontend Weekly vol. 130 - Vived\" \/>\n<meta property=\"og:description\" content=\"To by\u0142 raczej spokojny tydzie\u0144. Zdominowa\u0142y go dyskusje na temat Reacta ignoruj\u0105cego istnienie SPA oraz Angulara wprowadzaj\u0105cego wymagane Inputs. Bez zb\u0119dnego przed\u0142u\u017cania zapraszamy do kolejnej edycji naszego przegl\u0105du.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-24T10:59:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-24T10:59:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tomasz Borowicz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/\"},\"author\":{\"name\":\"Tomasz Borowicz\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb\"},\"headline\":\"React udaje, \u017ce SPA nie istniej\u0105 | Frontend Weekly vol. 130\",\"datePublished\":\"2023-03-24T10:59:09+00:00\",\"dateModified\":\"2023-03-24T10:59:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/\"},\"wordCount\":618,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-3.png\",\"articleSection\":[\"Frontend\",\"No category\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/\",\"url\":\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/\",\"name\":\"React udaje, \u017ce SPA nie istniej\u0105 | Frontend Weekly vol. 130 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-3.png\",\"datePublished\":\"2023-03-24T10:59:09+00:00\",\"dateModified\":\"2023-03-24T10:59:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-3.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-3.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React udaje, \u017ce SPA nie istniej\u0105 | Frontend Weekly vol. 130\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vived.io\/pl\/#website\",\"url\":\"https:\/\/vived.io\/pl\/\",\"name\":\"Vived\",\"description\":\"platform empowering IT people and technology companies to synergic growth\",\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vived.io\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vived.io\/pl\/#organization\",\"name\":\"Vived\",\"url\":\"https:\/\/vived.io\/pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"width\":136,\"height\":45,\"caption\":\"Vived\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb\",\"name\":\"Tomasz Borowicz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g\",\"caption\":\"Tomasz Borowicz\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"React udaje, \u017ce SPA nie istniej\u0105 | Frontend Weekly vol. 130 - Vived","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/","og_locale":"pl_PL","og_type":"article","og_title":"React udaje, \u017ce SPA nie istniej\u0105 | Frontend Weekly vol. 130 - Vived","og_description":"To by\u0142 raczej spokojny tydzie\u0144. Zdominowa\u0142y go dyskusje na temat Reacta ignoruj\u0105cego istnienie SPA oraz Angulara wprowadzaj\u0105cego wymagane Inputs. Bez zb\u0119dnego przed\u0142u\u017cania zapraszamy do kolejnej edycji naszego przegl\u0105du.","og_url":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/","og_site_name":"Vived","article_published_time":"2023-03-24T10:59:09+00:00","article_modified_time":"2023-03-24T10:59:12+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-3.png","type":"image\/png"}],"author":"Tomasz Borowicz","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/"},"author":{"name":"Tomasz Borowicz","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb"},"headline":"React udaje, \u017ce SPA nie istniej\u0105 | Frontend Weekly vol. 130","datePublished":"2023-03-24T10:59:09+00:00","dateModified":"2023-03-24T10:59:12+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/"},"wordCount":618,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-3.png","articleSection":["Frontend","No category"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/","url":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/","name":"React udaje, \u017ce SPA nie istniej\u0105 | Frontend Weekly vol. 130 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-3.png","datePublished":"2023-03-24T10:59:09+00:00","dateModified":"2023-03-24T10:59:12+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-3.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Frontend-Weekly-1200x628_V2-3.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/react-udaje-ze-spa-nie-istnieja-frontend-weekly-vol-130\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"React udaje, \u017ce SPA nie istniej\u0105 | Frontend Weekly vol. 130"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb","name":"Tomasz Borowicz","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g","caption":"Tomasz Borowicz"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>1. Czy React udaje, \u017ce SPA nie istniej\u0105?<\/h2>\n","innerContent":["\n<h2>1. Czy React udaje, \u017ce SPA nie istniej\u0105?<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W poprzedniej edycji naszego raportu podrzucali\u015bmy Wam link do <a href=\"https:\/\/react.dev\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">nowej dokumentacji Reacta<\/a>. Prawie pod wszystkimi wzgl\u0119dami jest ona lepsza od starej dokumentacji. Jest napisana z my\u015bl\u0105 o hookach, zawiera interaktywne przyk\u0142ady i pokrywa wiele temat\u00f3w, kt\u00f3rych brakowa\u0142o w poprzedniej wersji. <\/p>\n","innerContent":["\n<p>W poprzedniej edycji naszego raportu podrzucali\u015bmy Wam link do <a href=\"https:\/\/react.dev\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">nowej dokumentacji Reacta<\/a>. Prawie pod wszystkimi wzgl\u0119dami jest ona lepsza od starej dokumentacji. Jest napisana z my\u015bl\u0105 o hookach, zawiera interaktywne przyk\u0142ady i pokrywa wiele temat\u00f3w, kt\u00f3rych brakowa\u0142o w poprzedniej wersji. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Premiera nowej dokumentacji nie oby\u0142a si\u0119 jednak bez kontrowersji. Wielu u\u017cytkownik\u00f3w narzeka na brak pokrycia tak wa\u017cnych temat\u00f3w jak testy czy acessability. Najwi\u0119cej dyskusji wzbudzi\u0142a jednak strona \u201c<a href=\"https:\/\/react.dev\/learn\/start-a-new-react-project\" target=\"_blank\" rel=\"noreferrer noopener\">Start a New React Project<\/a>\u201d. Zgodnie z oczekiwaniami spo\u0142eczno\u015bci, nie wspomina ona ju\u017c o przestarza\u0142ym i niewspieranym Create React App. Zamiast tego opisuje ona jak wystartowa\u0107 projekt z Next.js, Remix czy Gatsby. I w tym miejscu zaczynaj\u0105 si\u0119 kontrowersje. Dokumentacja sprowadza aplikacje napisane bez frameworku do nielicznych i bardzo specyficznych przypadk\u00f3w brzegowych. Ba! Gdzie tylko to mo\u017cliwe dokumentacja odradza rozwijanie aplikacji w ten spos\u00f3b.<\/p>\n","innerContent":["\n<p>Premiera nowej dokumentacji nie oby\u0142a si\u0119 jednak bez kontrowersji. Wielu u\u017cytkownik\u00f3w narzeka na brak pokrycia tak wa\u017cnych temat\u00f3w jak testy czy acessability. Najwi\u0119cej dyskusji wzbudzi\u0142a jednak strona \u201c<a href=\"https:\/\/react.dev\/learn\/start-a-new-react-project\" target=\"_blank\" rel=\"noreferrer noopener\">Start a New React Project<\/a>\u201d. Zgodnie z oczekiwaniami spo\u0142eczno\u015bci, nie wspomina ona ju\u017c o przestarza\u0142ym i niewspieranym Create React App. Zamiast tego opisuje ona jak wystartowa\u0107 projekt z Next.js, Remix czy Gatsby. I w tym miejscu zaczynaj\u0105 si\u0119 kontrowersje. Dokumentacja sprowadza aplikacje napisane bez frameworku do nielicznych i bardzo specyficznych przypadk\u00f3w brzegowych. Ba! Gdzie tylko to mo\u017cliwe dokumentacja odradza rozwijanie aplikacji w ten spos\u00f3b.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/embed","attrs":{"url":"https:\/\/twitter.com\/youyuxi\/status\/1636536302878478336","type":"rich","providerNameSlug":"twitter","responsive":true,"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-embed aligncenter is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/twitter.com\/youyuxi\/status\/1636536302878478336\n<\/div><\/figure>\n","innerContent":["\n<figure class=\"wp-block-embed aligncenter is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/twitter.com\/youyuxi\/status\/1636536302878478336\n<\/div><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Z jednej strony podej\u015bcie takie mo\u017ce wydawa\u0107 si\u0119 rozs\u0105dne. Nowe funkcjonalno\u015bci Reacta takie jak React Server Components nie b\u0119d\u0105 dzia\u0142a\u0107 bez wsparcia frameworku. Podadto, framewrki wprowadzaj\u0105 ustandaryzowane rozwi\u0105zania dla problem\u00f3w takich jak routing czy pobieranie danych. Dzi\u0119ki temu pocz\u0105tkowa konfiguracja staje si\u0119 du\u017co prostsza i nie wymaga podj\u0119cia wielu trudnych technicznych decyzji. <\/p>\n","innerContent":["\n<p>Z jednej strony podej\u015bcie takie mo\u017ce wydawa\u0107 si\u0119 rozs\u0105dne. Nowe funkcjonalno\u015bci Reacta takie jak React Server Components nie b\u0119d\u0105 dzia\u0142a\u0107 bez wsparcia frameworku. Podadto, framewrki wprowadzaj\u0105 ustandaryzowane rozwi\u0105zania dla problem\u00f3w takich jak routing czy pobieranie danych. Dzi\u0119ki temu pocz\u0105tkowa konfiguracja staje si\u0119 du\u017co prostsza i nie wymaga podj\u0119cia wielu trudnych technicznych decyzji. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Z drugiej strony, React od lat szczyci\u0142 si\u0119 byciem tylko bibliotek\u0105 do kt\u00f3rej odpowiednie klocki mo\u017cna dok\u0142ada\u0107 wedle w\u0142asnych potrzeb. Wielu zwraca te\u017c uwag\u0119, \u017c\u0119 wykorzystanie skomplikowanego frameworku do stworzenia na przyk\u0142ad prostego dashboardu, to strzelanie z armaty do muchy. Inaczej m\u00f3wi\u0105c, Reactowa aplikacja bez frameworku to wci\u0105\u017c popularny przypadek u\u017cycia, a nie tylko specyficzny przypadek brzegowy.<\/p>\n","innerContent":["\n<p>Z drugiej strony, React od lat szczyci\u0142 si\u0119 byciem tylko bibliotek\u0105 do kt\u00f3rej odpowiednie klocki mo\u017cna dok\u0142ada\u0107 wedle w\u0142asnych potrzeb. Wielu zwraca te\u017c uwag\u0119, \u017c\u0119 wykorzystanie skomplikowanego frameworku do stworzenia na przyk\u0142ad prostego dashboardu, to strzelanie z armaty do muchy. Inaczej m\u00f3wi\u0105c, Reactowa aplikacja bez frameworku to wci\u0105\u017c popularny przypadek u\u017cycia, a nie tylko specyficzny przypadek brzegowy.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":15327,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/download-1.jpeg\" alt=\"\" class=\"wp-image-15327\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/download-1.jpeg\" alt=\"\" class=\"wp-image-15327\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u015bli chcecie zag\u0142\u0119bi\u0107 si\u0119 w argumenty tej drugiej strony, to CEO .wasp (fullstackowy framework oparty o Reacta) opublikowa\u0142 w tym tygodniu <a href=\"https:\/\/wasp-lang.dev\/blog\/2023\/03\/17\/new-react-docs-pretend-spas-dont-exist\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">\u015bwietny post w kt\u00f3rym zag\u0142\u0119bia si\u0119 w temat<\/a>. <\/p>\n","innerContent":["\n<p>Je\u015bli chcecie zag\u0142\u0119bi\u0107 si\u0119 w argumenty tej drugiej strony, to CEO .wasp (fullstackowy framework oparty o Reacta) opublikowa\u0142 w tym tygodniu <a href=\"https:\/\/wasp-lang.dev\/blog\/2023\/03\/17\/new-react-docs-pretend-spas-dont-exist\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">\u015bwietny post w kt\u00f3rym zag\u0142\u0119bia si\u0119 w temat<\/a>. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/embed","attrs":{"url":"https:\/\/twitter.com\/trashh_dev\/status\/1636743375956348928","type":"rich","providerNameSlug":"twitter","responsive":true,"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-embed aligncenter is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/twitter.com\/trashh_dev\/status\/1636743375956348928\n<\/div><\/figure>\n","innerContent":["\n<figure class=\"wp-block-embed aligncenter is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/twitter.com\/trashh_dev\/status\/1636743375956348928\n<\/div><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. Angular dodaje wsparcie dla required Inputs!<\/h2>\n","innerContent":["\n<h2>2. Angular dodaje wsparcie dla required Inputs!<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Angular na przestrzeni ostatniego roku zacz\u0105\u0142 rozwija\u0107 si\u0119 z zadziwiaj\u0105c\u0105 pr\u0119dko\u015bci\u0105 i po kolei adresuje najwi\u0119ksze bol\u0105czki deweloper\u00f3w. Pocz\u0105wszy od Standalone Components, przez Strictly Typed Forms i Functional Router Guards, po drobne usprawnienia jak Self Closing Tags czy Default Module Exports. Wszystko wskazuje na to, \u017ce Angular 16 b\u0119dzie kontynuowa\u0142 ten trend. Do najnowszej wersji frameworka  opr\u00f3cz opisywanych przez nas kilka tygodni temu Signals, trafi\u0105 te\u017c Required Inputs. <\/p>\n","innerContent":["\n<p>Angular na przestrzeni ostatniego roku zacz\u0105\u0142 rozwija\u0107 si\u0119 z zadziwiaj\u0105c\u0105 pr\u0119dko\u015bci\u0105 i po kolei adresuje najwi\u0119ksze bol\u0105czki deweloper\u00f3w. Pocz\u0105wszy od Standalone Components, przez Strictly Typed Forms i Functional Router Guards, po drobne usprawnienia jak Self Closing Tags czy Default Module Exports. Wszystko wskazuje na to, \u017ce Angular 16 b\u0119dzie kontynuowa\u0142 ten trend. Do najnowszej wersji frameworka  opr\u00f3cz opisywanych przez nas kilka tygodni temu Signals, trafi\u0105 te\u017c Required Inputs. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"prismatic\/blocks","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">@Component({\n  selector: 'app-test',\n  template: '&lt;h1>Hello {{name}}&lt;\/h1>',\n  standalone: true,\n})\nclass MyComponent {\n  @Input({required: true}) name: string;\n}<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">@Component({\n  selector: 'app-test',\n  template: '&lt;h1>Hello {{name}}&lt;\/h1>',\n  standalone: true,\n})\nclass MyComponent {\n  @Input({required: true}) name: string;\n}<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W przypadku kiedy oznaczymy <code>@Input()<\/code> jako required, a nast\u0119pnie w dowolnym miejscu w naszej aplikacji zapomnimy przypisa\u0107 mu warto\u015b\u0107, kompilator wyrzuci adekwatny b\u0142\u0105d. Do tej pory podobne zachowanie mo\u017cna by\u0142o przez kilka sprytnych hack\u00f3w, ale zdecydowanie nie by\u0142o to ani rozwi\u0105zanie intuicyjne, ani czytelne. <\/p>\n","innerContent":["\n<p>W przypadku kiedy oznaczymy <code>@Input()<\/code> jako required, a nast\u0119pnie w dowolnym miejscu w naszej aplikacji zapomnimy przypisa\u0107 mu warto\u015b\u0107, kompilator wyrzuci adekwatny b\u0142\u0105d. Do tej pory podobne zachowanie mo\u017cna by\u0142o przez kilka sprytnych hack\u00f3w, ale zdecydowanie nie by\u0142o to ani rozwi\u0105zanie intuicyjne, ani czytelne. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"prismatic\/blocks","attrs":{"language":"typescript"},"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-typescript\">@Component({\n  selector: 'app-test[name]',\n  template: '&lt;h1>Hello {{name}}&lt;\/h1>',\n  standalone: true,\n})\nclass MyComponent {\n  @Input() name: string;\n}<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-typescript\">@Component({\n  selector: 'app-test[name]',\n  template: '&lt;h1>Hello {{name}}&lt;\/h1>',\n  standalone: true,\n})\nclass MyComponent {\n  @Input() name: string;\n}<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>By\u0107 mo\u017ce Required Inputs nie s\u0105 rewolucj\u0105 na miar\u0119 React Server Components, ale to w\u0142a\u015bnie na braku takich podstawowych funkcjonalno\u015bci Angular cierpia\u0142 najbardziej. Patrz\u0105c holistycznie na zmiany zachodz\u0105ce w Angularze trzeba przyzna\u0107, \u017ce framework wreszcie zaczyna zmierza\u0107 w odpowiednim kierunku.<\/p>\n","innerContent":["\n<p>By\u0107 mo\u017ce Required Inputs nie s\u0105 rewolucj\u0105 na miar\u0119 React Server Components, ale to w\u0142a\u015bnie na braku takich podstawowych funkcjonalno\u015bci Angular cierpia\u0142 najbardziej. Patrz\u0105c holistycznie na zmiany zachodz\u0105ce w Angularze trzeba przyzna\u0107, \u017ce framework wreszcie zaczyna zmierza\u0107 w odpowiednim kierunku.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>Bonus: Hooki, kt\u00f3rych prawdopodobnie nie potrzebujesz<\/h2>\n","innerContent":["\n<h2>Bonus: Hooki, kt\u00f3rych prawdopodobnie nie potrzebujesz<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":15323,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/7foevt.jpeg\" alt=\"\" class=\"wp-image-15323\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/7foevt.jpeg\" alt=\"\" class=\"wp-image-15323\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jako, \u017ce miniony tydznie\u0144 nie obfitowa\u0142 w newsy, mamy dla Was ma\u0142y bonus: list\u0119 hook\u00f3w, kt\u00f3rych prawdopodobnie nie b\u0119dziecie potrzebowa\u0107. Artyku\u0142 przygotowany przez Brada Westfalla w detalach opisuje wszystkie ma\u0142opopularne hooki i wyja\u015bnia kiedy mo\u017cecie ich potrzebowa\u0107. Je\u015bli szukacie lektury, do sobotniej porannej kawy, to zdecydowanie polecam!<\/p>\n","innerContent":["\n<p>Jako, \u017ce miniony tydznie\u0144 nie obfitowa\u0142 w newsy, mamy dla Was ma\u0142y bonus: list\u0119 hook\u00f3w, kt\u00f3rych prawdopodobnie nie b\u0119dziecie potrzebowa\u0107. Artyku\u0142 przygotowany przez Brada Westfalla w detalach opisuje wszystkie ma\u0142opopularne hooki i wyja\u015bnia kiedy mo\u017cecie ich potrzebowa\u0107. Je\u015bli szukacie lektury, do sobotniej porannej kawy, to zdecydowanie polecam!<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Hooki, kt\u00f3rych prawdopodobnie nie b\u0119dziecie potrzebowa\u0107:<br>\ud83d\udd34 <code>useDebugValue()<\/code><br>\ud83d\udd34 <code>useInsertionEffect()<\/code><br>\ud83d\udd34 <code>useImperativeHandle()<\/code><br>\ud83d\udfe0 <code>useSyncExternalStore()<\/code><br>\ud83d\udfe0 <code>useDeferredValue()<\/code><br>\ud83d\udfe2 <code>useEffect()<\/code><br>\ud83d\udfe2 <code>useLayoutEffect()<\/code><br><br>\ud83d\udd34 Prawdopodonie nigdy nie u\u017cyjesz tego hooka<br>\ud83d\udfe0 Tego hooka u\u017cyjesz w kilku rzadkich przypadkach<br>\ud83d\udfe2 Tego hooka powinienie\u015b\/powinna\u015b zacz\u0105\u0107 u\u017cywa\u0107 na codzie\u0144<\/p>\n","innerContent":["\n<p>Hooki, kt\u00f3rych prawdopodobnie nie b\u0119dziecie potrzebowa\u0107:<br>\ud83d\udd34 <code>useDebugValue()<\/code><br>\ud83d\udd34 <code>useInsertionEffect()<\/code><br>\ud83d\udd34 <code>useImperativeHandle()<\/code><br>\ud83d\udfe0 <code>useSyncExternalStore()<\/code><br>\ud83d\udfe0 <code>useDeferredValue()<\/code><br>\ud83d\udfe2 <code>useEffect()<\/code><br>\ud83d\udfe2 <code>useLayoutEffect()<\/code><br><br>\ud83d\udd34 Prawdopodonie nigdy nie u\u017cyjesz tego hooka<br>\ud83d\udfe0 Tego hooka u\u017cyjesz w kilku rzadkich przypadkach<br>\ud83d\udfe2 Tego hooka powinienie\u015b\/powinna\u015b zacz\u0105\u0107 u\u017cywa\u0107 na codzie\u0144<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<p class=\"has-text-align-center\"><a href=\"https:\/\/reacttraining.com\/blog\/hooks-you-probably-dont-need\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Hooks You Probably Don't Need <\/a><\/p>\n","innerContent":["\n<p class=\"has-text-align-center\"><a href=\"https:\/\/reacttraining.com\/blog\/hooks-you-probably-dont-need\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Hooks You Probably Don't Need <\/a><\/p>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/15321","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/comments?post=15321"}],"version-history":[{"count":7,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/15321\/revisions"}],"predecessor-version":[{"id":15347,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/15321\/revisions\/15347"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/15330"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=15321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=15321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=15321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}