{"id":2014,"date":"2020-05-24T23:23:52","date_gmt":"2020-05-24T21:23:52","guid":{"rendered":"https:\/\/ways4.eu\/?p=2014"},"modified":"2022-01-13T14:08:49","modified_gmt":"2022-01-13T12:08:49","slug":"react-hooks-besser-anwenden","status":"publish","type":"post","link":"https:\/\/ways4.eu\/de\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/","title":{"rendered":"React Hooks besser anwenden"},"content":{"rendered":"<p>In diesem Artikel werde ich versuchen, die m\u00f6glichen Best Practices vorzustellen, die mit React Hooks machbar sind , um React Hooks als Entwickler in zuk\u00fcnftigen Projekten besser verwenden zu k\u00f6nnen.<\/p>\n<p>Hierzu ist ein <strong>Grundverst\u00e4ndnis<\/strong> in <strong>reactJs<\/strong> erforderlich.<\/p>\n<h3>Warum sollten ReactHooks verwendet werden ?<\/h3>\n<p>React ab V16.8 enth\u00e4lt Hooks und erm\u00f6glicht das Verwalten von Status- und anderen React-Funktionen, ohne das eine Klasse erforderlich ist.<\/p>\n<p>K\u00f6nnen wir nicht einfach weiterhin Klassen verwenden? Ja, geht zweifelsohne, allerdings sollte es wohl\u00fcberlegt sein,denn mit Functional Components geht einiges besser:<\/p>\n<ul>\n<li>Einfache Trennung von Container- und Pr\u00e4sentationskomponenten<\/li>\n<li>Besser lesbare und testbare Komponenten.<\/li>\n<li>weniger Code erforderlich.<\/li>\n<li>Performance-Boost ?<\/li>\n<\/ul>\n<p>React bietet Entwicklern bereits vordefinierte, <strong>integrierte Hooks<\/strong> wie <strong>useState<\/strong>, <strong>useEffect<\/strong>, <strong>useContext<\/strong> &#8230; und bietet zus\u00e4tzlich die M\u00f6glichkeit auch eigene Hooks zu erstellen (dazu sp\u00e4ter mehr in einem separaten Artikel) .<\/p>\n<p>Zun\u00e4chst einige Beispiele, die sich auf <strong>useState<\/strong> und <strong>useEffect<\/strong> Hooks konzentrieren. Die gleichen Regeln sind auch auf die anderen Hooks anwendbar.<\/p>\n<pre class=\"wp-block-code\"><code>import React, { useState } from 'react'; \/\/ Aufruf des useState Hook\n\nconst EinfacheKomponente1 = () =&gt; { \/\/ Hooks in funktionalen Komponenten \n  const [count, setCount] = useState(0) \/\/Initialisierung\n  return (\n    &lt;div&gt;\n      &lt;p&gt;Klick Anzahl : {count}&lt;\/p&gt;\n      &lt;button onClick={() =&gt; setCount(count + 1)}&gt;\n        Klick mich     \n      &lt;\/button&gt;\n    &lt;\/div&gt;\n  )\n}\n\nReactDOM.render(&lt;EinfacheKomponente1 \/&gt;, document.getElementById('app'))<\/code><\/pre>\n<p>Der obige Code zeigt die Verwendung von useState Hooks. Im Beispiel handelt es sich um eine einfache Komponente, mit der der Benutzer eine Zahl (Counter) erh\u00f6hen kann, wenn das Klickereignis ausgel\u00f6st wird. Ohne Verwendung von Hooks k\u00f6nnten wir etwas \u00c4hnliches schreiben (mittels class-based-components, siehe den folgenden Code), um die Werte zu initialisieren dient dann der Konstruktor innerhalb der Klasse:<\/p>\n<pre class=\"wp-block-code\"><code>this.state = {\n   count:0 \n}<\/code><\/pre>\n<p>Wenn der useState-Hook verwendet wird, ist die Initialisierung in functional Components wie folgt machbar:<\/p>\n<pre class=\"wp-block-code\"><code>const [count, setCount] = useState(0);<\/code><\/pre>\n<p>Das Klickereignis hat die useState-Funktion ausgel\u00f6st, die den Counter erh\u00f6ht.<\/p>\n<p>Das gleiche Problem k\u00f6nnte gel\u00f6st werden, wenn wir Klassen verwenden, allerdings dann mit mehr Code.<br \/>\nWenn wir uns vorstellen, dass die Komplexit\u00e4t der zuverwaltenden states immer gr\u00f6\u00dfer wird, wird es dann schnell un\u00fcbersichtlich ?\u200d\u2642\ufe0f<\/p>\n<p>Die Verwendung von Hooks kann allerdings auch zu Komplexit\u00e4t f\u00fchren.<\/p>\n<p>Ziel dieses Artikels ist es, zu zeigen, dass mit wenigen Schritten komplexe Apps erstellt und deren Komplexit\u00e4t mithilfe von Hooks? verwaltet werden k\u00f6nnen.<\/p>\n<p>Nun wollen wir sehen, wie wir dieses Ziel erreichen k\u00f6nnen.<\/p>\n<p>Basierend auf der <a href=\"https:\/\/reactjs.org\/docs\/hooks-rules.html\">React-Doku zu Hooks<\/a> sind nur einige wenige Regeln zu befolgen, um mit dem Schreiben von Hooks-basierten Apps beginnen zu k\u00f6nnen.<\/p>\n<h3>1. Wo Hooks verwenden und in welcher Reihenfolge ?<\/h3>\n<p>Zum <strong>Wo<\/strong> sind folgende Regeln wichtig. Hooks werden niemals aufgerufen in:<\/p>\n<pre class=\"wp-block-preformatted\">\u2714 Klassenkomponenten\n\u2714 Event Handler \n\u2714 Loops\n\u2714 in Funktionen, die an useMemo, useReducer, or useEffect \u00fcbergeben werden\n\u2714 in nicht-React Funktionen<\/pre>\n<pre class=\"wp-block-code\"><code>if (true) { \/\/ der useEffect hook wird in Bedingung aufgerufen ?\n  useEffect(myFunction() =&gt; {\n    console.log('hier rendern')\n  });\n}<\/code><\/pre>\n<p>Jetzt haben wir gelernt, wo wir Hooks <strong>nicht<\/strong> aufrufen d\u00fcrfen.<br \/>\nDie erste Regel besteht darin, die <strong>Aufruf-Reihenfolge zu respektieren<\/strong> und Hooks stets in der <strong>obersten Ebene der Funktionskomponente<\/strong> aufzurufen. Im Klartext bedeutet dies: React muss wissen, dass Hooks<strong> immer in derselben Reihenfolge<\/strong> aufgerufen werden und <strong>nicht von Bedingungen oder Schleifen<\/strong> beim Rendern abh\u00e4ngen.<\/p>\n<p>Die Verwendung von React-Hooks unter Beachtung der React-Regeln sollte dann zB ungef\u00e4hr so aussehen:<\/p>\n<pre class=\"wp-block-code\"><code>const einfacheKomponente2 = () =&gt; { \n  const [count, setCount] = useState(0) \u2714\n  const [name, setCount] = useState('') \u2714\n  useEffect(() =&gt; { \u2714\n    document.title = `Du hast mich ${count} mal geklickt.`;\n  });\n}<\/code><\/pre>\n<p>F\u00fcr die diejenigen, die mehr wissen m\u00f6chten, zB warum die Reihenfolge so wichtig ist und was sich hinter den Kulissen so tut, und auch mehr \u00fcber verkn\u00fcpfte Listen und Datenstrukturen wissen m\u00f6chten,gibt es <a href=\"https:\/\/medium.com\/flatiron-labs\/breaking-the-rules-of-react-hooks-9e892636641e\">hier eine gute und weiterf\u00fchrende Erl\u00e4uterung.<\/a><\/p>\n<h3>2.\u00a0 React-Hooks nur innerhalb von React-Functional-Components verwenden<\/h3>\n<p>React- Funktionskomponenten und Javascript-Funktionen sind <strong>nicht<\/strong> dasselbe. Das Aufrufen von Hooks innerhalb einer js-Funktion ist nicht m\u00f6glich. Funktionale React-Komponenten akzeptieren props als Argumente und geben JSX zur\u00fcck, selbst wenn sie denselben body und dieselbe Struktur wie eine einfache Javascript-Funktion haben. ?\u200d\u2640\ufe0f<\/p>\n<pre class=\"wp-block-code\"><code>import { useState } = \"react\";\n\nconst sagHallo(name) =&gt; {\n  const [name, setName] = useState(\"Franz\");\n  return console.log(`Hallo ${name}`);\n}\ndocument.getElementById(\"root\").innerHTML = sagHallo;<\/code><\/pre>\n<p>Der useState Hook ist hier unbrauchbar, da es sich nicht um eine React- Funktions-Komponente handelt.<\/p>\n<h3>3. React CustomHooks &#8211; benutzerdefinierte Hooks<\/h3>\n<p>Benutzerdefinierte Hooks sind eine neue Methode, womit die Flexibilit\u00e4t geboten wird, Logik zu teilen, was in React-Komponenten zuvor nicht m\u00f6glich war. Es kann verwendet werden, um viele Anwendungsf\u00e4lle wie das Abrufen von Daten, komplexe Animationen, deklarative Abonnements, Timer usw. abzudecken.<\/p>\n<p><strong>Benutzerdefinierte Hooks bedeuten weniger Code. und weniger sich wiederholende Bl\u00f6cke.<\/strong><\/p>\n<p>Stellen wir uns vor, wir verwenden eine Komponente, die einen sehr komplexen gro\u00dfen State verwendet. Der gleiche State wird m\u00f6glicherweise von anderen Komponenten gemeinsam genutzt. Wenn der State gr\u00f6\u00dfer wird, ist es sehr schwierig, seine logische Komplexit\u00e4t zu verwalten.<\/p>\n<p>Die Verwendung vieler setState in der Funktionskomponente macht das Aktualisieren des State nicht zentral und einfacher. Daher kommt auch die Idee der -Reducer-\u00a0 ?, das Erstellen eines benutzerdefinierten useReducer-Hooks l\u00f6st dieses Problem f\u00fcr viele andere Komponenten.<\/p>\n<p>Erstellen wir einen einfachen benutzerdefinierten Hook, der einen Titel anzeigt. Unser Hook befindet sich in einer separaten Datei und sieht folgenderma\u00dfen aus:<\/p>\n<pre class=\"wp-block-code\"><code>const useTitle= (title) =&gt; {\n  useEffect(() =&gt; {\n    document.title = title;\n  }, [title])\n}<\/code><\/pre>\n<p>Wie wir sehen k\u00f6nnen, ist ein benutzerdefinierter Hook eine Funktion, die mit use beginnt und einen anderen Hook im Inneren verwenden kann ? und nat\u00fcrlich kann dieser Hook \u00fcberall angewendet werden !!\u00a0 ?<\/p>\n<pre class=\"wp-block-code\"><code>import React, { Component, useState } from 'react';\n import useTitle from '.\/myHooks\/usetitle'; \/\/ benutzerdefinierter Hook\n\n const Counter() =&gt; {\n    const [count, setCount] = useState(0);\n    const incrementCount = () =&gt; setCount(count + 1);\n    useTitle (`You clicked ${count} times`);\n\n    return (\n      &lt;div&gt;\n        &lt;p&gt;You clicked {count} times&lt;\/p&gt;\n        &lt;button onClick={incrementCount}&gt;Click me&lt;\/button&gt;\n      &lt;\/div&gt;\n    )\n  }\n\n  export default Counter;<\/code><\/pre>\n<p>Vorstellbar ist zB\u00a0 einen useLocalStorageHook zu erstellen, um den lokalen Speicher zu verwalten, useValidDataHook zu verwenden, um ein Formular zu validieren &#8230; und vieles mehr!<br \/>\nDamit w\u00e4re ein wesentlich sauberer und zentralisierter Code m\u00f6glich ?.<\/p>\n<h3>4. Code-Linter verwenden !<\/h3>\n<p>Um l\u00e4stige Konflikte beim Coding zu vermeiden, sollte ein esLint-Plugin verwendet werden, um sicherzustellen, dass alle oben genannten Regeln angewendet werden. Insbesondere wenn im Team gearbeitet wird.<\/p>\n<p>create-react-app (CRA) enth\u00e4lt bereits das Plugin, anderenfalls kann es wie folgt installiert werden:<\/p>\n<pre class=\"wp-block-code\"><code>npm install eslint-plugin-react-hooks --save-dev<\/code><\/pre>\n<p>Folgende Konfiguration sollte in der esLint-Konfigurationsdatei enthalten sein, um die o.a. Regeln im Linter zu aktivieren:<\/p>\n<pre class=\"wp-block-code\"><code>\/\/ ESLint Konfiguration\n{\n  \"plugins\": [\n    \/\/ ...\n    \"react-hooks\"\n  ],\n  \"rules\": {\n    \/\/ ...\n    \"react-hooks\/rules-of-hooks\": \"error\", \/\/ \u00dcberpr\u00fcft Hook-Regeln\n    \"react-hooks\/exhaustive-deps\": \"warn\" \/\/ \u00dcberpr\u00fcft effects-deps.\n  }\n}<\/code><\/pre>\n<h3>Zusammenfassung<\/h3>\n<p>Ich habe in diesem Artikel versucht, die wichtigsten Regeln f\u00fcr Entwickler aufzulisten, die bereit sind, im n\u00e4chsten Projekt React-Hooks zu verwenden. F\u00fcr die Verwendung von Hooks sind die folgenden Schritte zu validieren:<\/p>\n<p>Einfachheit \u2714<br \/>\nOrganisation: In dieser Reihenfolge: zuerst berechnen , dann State instantiieren, Side-Effects beachten, Ereignishandler einrichten, schlie\u00dflich rendern (). \u2714<br \/>\nCode Type-Check, <a href=\"https:\/\/reactjs.org\/docs\/typechecking-with-proptypes.html\">weitere Infos dazu<\/a> \u2714<br \/>\nStyleguide verwenden, um Code-Einheitlichkeit und Integrit\u00e4t zu gew\u00e4hrleisten. \u2714<\/p>\n<div style='text-align:left' class='yasr-auto-insert-overall'><\/div><div style='text-align:left' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>In diesem Artikel werde ich versuchen, die m\u00f6glichen Best Practices vorzustellen, die mit React Hooks machbar sind , um React Hooks als Entwickler in zuk\u00fcnftigen&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/ways4.eu\/de\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/\">Weiterlesen<span class=\"screen-reader-text\">React Hooks besser anwenden<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"redux-templates_full_width","format":"standard","meta":{"_oct_exclude_from_cache":false,"_mi_skip_tracking":false,"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"BlogPosting","_wpoai_wizard_id":""},"categories":[115,23],"tags":[116],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>React Hooks besser anwenden<\/title>\n<meta name=\"description\" content=\"React Hooks besser anwenden Streng vertraulich !\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"React Hooks besser anwenden\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/\" \/>\n<meta property=\"og:site_name\" content=\"Streng vertraulich !\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-24T21:23:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-13T12:08:49+00:00\" \/>\n<meta name=\"author\" content=\"pathfinder\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@sabhe011\" \/>\n<meta name=\"twitter:site\" content=\"@sabhe011\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"pathfinder\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/\"},\"author\":{\"name\":\"pathfinder\",\"@id\":\"https:\/\/ways4.eu\/#\/schema\/person\/00041dcd2cf535a70052cf591c2abd81\"},\"headline\":\"React Hooks besser anwenden\",\"datePublished\":\"2020-05-24T21:23:52+00:00\",\"dateModified\":\"2022-01-13T12:08:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/\"},\"wordCount\":919,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ways4.eu\/#\/schema\/person\/00041dcd2cf535a70052cf591c2abd81\"},\"keywords\":[\"#react\"],\"articleSection\":[\"Coding\",\"Computers and IT\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/\",\"url\":\"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/\",\"name\":\"React Hooks besser anwenden\",\"isPartOf\":{\"@id\":\"https:\/\/ways4.eu\/#website\"},\"datePublished\":\"2020-05-24T21:23:52+00:00\",\"dateModified\":\"2022-01-13T12:08:49+00:00\",\"description\":\"React Hooks besser anwenden Streng vertraulich !\",\"breadcrumb\":{\"@id\":\"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ways4.eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"(Deutsch) React Hooks besser anwenden\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ways4.eu\/#website\",\"url\":\"https:\/\/ways4.eu\/\",\"name\":\"Streng vertraulich !\",\"description\":\"Nicht weitersagen...\",\"publisher\":{\"@id\":\"https:\/\/ways4.eu\/#\/schema\/person\/00041dcd2cf535a70052cf591c2abd81\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ways4.eu\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/ways4.eu\/#\/schema\/person\/00041dcd2cf535a70052cf591c2abd81\",\"name\":\"pathfinder\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/ways4.eu\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/i0.wp.com\/www.ways4.eu\/wp-content\/uploads\/2023\/01\/wp-1674746983690.jpg?fit=702%2C841&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.ways4.eu\/wp-content\/uploads\/2023\/01\/wp-1674746983690.jpg?fit=702%2C841&ssl=1\",\"width\":702,\"height\":841,\"caption\":\"pathfinder\"},\"logo\":{\"@id\":\"https:\/\/ways4.eu\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/ways4.eu\",\"https:\/\/twitter.com\/sabhe011\"],\"url\":\"https:\/\/ways4.eu\/de\/blog\/author\/pathfinder\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"React Hooks besser anwenden","description":"React Hooks besser anwenden Streng vertraulich !","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:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/","og_locale":"de_DE","og_type":"article","og_title":"React Hooks besser anwenden","og_url":"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/","og_site_name":"Streng vertraulich !","article_published_time":"2020-05-24T21:23:52+00:00","article_modified_time":"2022-01-13T12:08:49+00:00","author":"pathfinder","twitter_card":"summary_large_image","twitter_creator":"@sabhe011","twitter_site":"@sabhe011","twitter_misc":{"Verfasst von":"pathfinder","Gesch\u00e4tzte Lesezeit":"6\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/#article","isPartOf":{"@id":"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/"},"author":{"name":"pathfinder","@id":"https:\/\/ways4.eu\/#\/schema\/person\/00041dcd2cf535a70052cf591c2abd81"},"headline":"React Hooks besser anwenden","datePublished":"2020-05-24T21:23:52+00:00","dateModified":"2022-01-13T12:08:49+00:00","mainEntityOfPage":{"@id":"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/"},"wordCount":919,"commentCount":0,"publisher":{"@id":"https:\/\/ways4.eu\/#\/schema\/person\/00041dcd2cf535a70052cf591c2abd81"},"keywords":["#react"],"articleSection":["Coding","Computers and IT"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/","url":"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/","name":"React Hooks besser anwenden","isPartOf":{"@id":"https:\/\/ways4.eu\/#website"},"datePublished":"2020-05-24T21:23:52+00:00","dateModified":"2022-01-13T12:08:49+00:00","description":"React Hooks besser anwenden Streng vertraulich !","breadcrumb":{"@id":"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ways4.eu\/blog\/2020\/05\/24\/react-hooks-besser-anwenden\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ways4.eu\/"},{"@type":"ListItem","position":2,"name":"(Deutsch) React Hooks besser anwenden"}]},{"@type":"WebSite","@id":"https:\/\/ways4.eu\/#website","url":"https:\/\/ways4.eu\/","name":"Streng vertraulich !","description":"Nicht weitersagen...","publisher":{"@id":"https:\/\/ways4.eu\/#\/schema\/person\/00041dcd2cf535a70052cf591c2abd81"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ways4.eu\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/ways4.eu\/#\/schema\/person\/00041dcd2cf535a70052cf591c2abd81","name":"pathfinder","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/ways4.eu\/#\/schema\/person\/image\/","url":"https:\/\/i0.wp.com\/www.ways4.eu\/wp-content\/uploads\/2023\/01\/wp-1674746983690.jpg?fit=702%2C841&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.ways4.eu\/wp-content\/uploads\/2023\/01\/wp-1674746983690.jpg?fit=702%2C841&ssl=1","width":702,"height":841,"caption":"pathfinder"},"logo":{"@id":"https:\/\/ways4.eu\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/ways4.eu","https:\/\/twitter.com\/sabhe011"],"url":"https:\/\/ways4.eu\/de\/blog\/author\/pathfinder\/"}]}},"yasr_visitor_votes":{"number_of_votes":0,"sum_votes":0,"stars_attributes":{"read_only":false,"span_bottom":false}},"_links":{"self":[{"href":"https:\/\/ways4.eu\/de\/wp-json\/wp\/v2\/posts\/2014"}],"collection":[{"href":"https:\/\/ways4.eu\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ways4.eu\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ways4.eu\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ways4.eu\/de\/wp-json\/wp\/v2\/comments?post=2014"}],"version-history":[{"count":27,"href":"https:\/\/ways4.eu\/de\/wp-json\/wp\/v2\/posts\/2014\/revisions"}],"predecessor-version":[{"id":2152,"href":"https:\/\/ways4.eu\/de\/wp-json\/wp\/v2\/posts\/2014\/revisions\/2152"}],"wp:attachment":[{"href":"https:\/\/ways4.eu\/de\/wp-json\/wp\/v2\/media?parent=2014"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ways4.eu\/de\/wp-json\/wp\/v2\/categories?post=2014"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ways4.eu\/de\/wp-json\/wp\/v2\/tags?post=2014"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}