Heim  >  Artikel  >  Web-Frontend  >  Welche Kenntnisse sollte ich über React lernen? Zusammenfassung der Reaktionswissenspunkte (mit vollständigen Beispielen)

Welche Kenntnisse sollte ich über React lernen? Zusammenfassung der Reaktionswissenspunkte (mit vollständigen Beispielen)

寻∝梦
寻∝梦Original
2018-09-11 16:01:501749Durchsuche

Dieser Artikel stellt hauptsächlich das Lernen über Reagieren vor und fasst die Wissenspunkte über Reagieren zusammen. Beginnen wir mit dem Lesen des Inhalts dieses Artikels

Offiziell beginnen wir mit dem Lernen von Reagieren

1 . Wenn der erste Buchstabe einer Komponente in React groß geschrieben ist, wird er als benutzerdefinierte Komponente betrachtet. Wenn er klein geschrieben ist, wird er als eigener Elementname des DOM betrachtet. Wenn der erste Buchstabe Ihres benutzerdefinierten Komponentennamens ein Kleinbuchstabe ist, wird kein Fehler gemeldet, aber er wird nicht angezeigt.

2. Es kann nur einen Knoten in der äußersten Ebene der Rückgabe einer benutzerdefinierten Komponente geben.

3. Im geschriebenen HTML können keine Anweisungen in {} enthalten sein, es können jedoch Bewertungsausdrücke vorhanden sein. Sie können die Anweisung aber auch in eine Funktion schreiben und die Funktion dann in {} aufrufen.

4. Funktionsnamen und Labelnamen werden in Kamel-Schreibweise benannt.

5. Verwenden Sie htmlFor und className. Zum Beispiel f48f817659b5fa20e8078bc1b66e32afName8c1ecd4bb896b2264e0711597d40766c

6. Schreibstil: Sie können var style = {color: "red", backgroundColor:" in verwenden jsx blue"} und fügen Sie dann style={style} im benutzerdefinierten Tag hinzu. Denken Sie daran, die Benennung in Groß- und Kleinschreibung zu verwenden.

7. Nicht-DOM-Attribute:

a. hazardlySetInnerHTML: HTML-Code direkt in JSX einfügen

b. Referenz: übergeordnete Komponente verweist auf untergeordnete Komponente

c. Schlüssel: Renderleistung verbessern. Diff-Algorithmus

8. Funktionen, die in jedem Lebenszyklus der Komponente ausgeführt werden: a.

b. Laufen.

c. Zerstören.

9. Verwendung von Attributen:

a, c66779f069bd2b7ec0a732d614208d0d //Weisen Sie dem Attributnamen den Wert „abc“ zu

b ,

var props = {
  one:"123",
  two:"456"  
}
<HelloWorld {...props}/>  //展开语法相当于<HelloWorld one="123" two="456"}/>
c、var a = ReactDOM.render(<HelloWorld/>,document.body);

a.setProps({name:"Tim"}); //Diese Verwendung wird nicht empfohlen, sie verstößt gegen die Designprinzipien von React (die neueste Version scheint diese Funktion entfernt zu haben? Console.log kommt heraus und greift nach der Prototypenkette. Ich konnte diese Funktion nach der Suche nicht finden, nur setState)

10. Verwendung des Status:

 var HelloWorld = React.createClass({             render:function(){                 return e388a4556c0f65e1904146cc1a846beeHello,{this.props.name||"world"}94b3e26ee717c64999d7867364b1b4a3             }         });         var HelloUniverse = React.createClass({             handleChange:function(e){                 this.setState({                     name:e.target.value                 });             },             getInitialState:function(){                 return {                     name:'',                 }             },             render:function(){                 return e388a4556c0f65e1904146cc1a846bee
                     3d6f15d111504205b90761d1b885e19b
                     3aac1c4d464391a52269ddfd6b12d6a8
                 94b3e26ee717c64999d7867364b1b4a3             }         });         var a = ReactDOM.render(a6d3e660a2713293fe38ad9ec2a46721
         ,document.getElementById("root"));

11. Attribute und Status Ähnlichkeiten und Unterschiede

12. Ereignisverarbeitungsfunktion

14. Kollaborative Nutzung von Komponenten

Kollaborative Nutzung zwischen übergeordneten und untergeordneten Komponenten Sie können untergeordnete Komponenten verwenden, um Methoden übergeordneter Komponenten aufzurufen. Um dieses Ziel zu erreichen, wird die übergeordnete Komponente durch prop

 76c82f278ac045591c9159d381de2c57
 e50fd76c890a16356472f13b52f09dcd
 93f0f5c25f18dab9d176bd4f6de5d30e
     a80eb7cbb6fff8b0ff70bae37074b813
     b2386ffb911b14667cb8f0f91ea547a7Hello,world6e916e0f7d1e588d4f442bf645aedb2f
     61eeee6dc069be0af6ec30e499aa96232cacc6d41bbb37262a98f745aa00fbf0
     ae137d68d2726eef3a3ab8fd02db82ac2cacc6d41bbb37262a98f745aa00fbf0
     6c01d1e7f9c8f4169484bfc77d321ec62cacc6d41bbb37262a98f745aa00fbf0
 9c3bca370b5104690d9ef395f2c5f8d1
 6c04bd5ca3fcae76e30b72ad730ca86d
     9461ebfd72f621e95575d38798f6304d94b3e26ee717c64999d7867364b1b4a3
     9d362b06220cee2dc15a3c815f80a61e         var GenderSelect = React.createClass({             render:function(){                 return 0af7195d42db1dffc2a9a5f85aaa2523
                     859be17dfcd6af2d26185135fb5bd8fc男4afa15d3069109ac30911f04c56f3338
                     302223510126f57919da8bd0aae4999d女4afa15d3069109ac30911f04c56f3338
                 18bb6ffaf0152bbe49cd8a3620346341             }         });         var SignupForm = React.createClass({             getInitialState:function(){                 return {                     name:'',                     pwd:'',                     gender:'',                 }             },             handleChange:function(name,e){                 var newState = {}                 newState[name] = e.target.value;                 this.setState(newState);             },             handleSelect:function(e){                 this.setState({gender:e.target.value});             },             render:function(){                 console.log(this.state)                 return ff9c23ada1bcecdd1a0fb5d5a0f18437
                     6bdab968141063db56c595ca92e6ba13
                     b09b07021e9bc4f0c6ac9ccf14b9d325
                     bb6e2821895de793301ee6cda0d13d50
                 f5a47148e367a6035fd7a2faa965022e             }         });         var a = ReactDOM.render(380d7116d918a5f1222d431cfa4f7858,document.getElementById("root"));
     2cacc6d41bbb37262a98f745aa00fbf0
 36cc49f0c466276486e50c850b7e4956
 73a6ac4ed44ffec12cee46588e518a5e

Eltern-Kind-Komponenten-Interaktion

an die untergeordnete Komponente übergeben (Wenn Sie möchten Weitere Informationen finden Sie hier. PHP-Chinesische Website React-Referenzhandbuch (Weitere Informationen in der Spalte) Brothers-Komponenten können implementiert werden, indem die untergeordnete Komponente A an die übergeordnete Komponente und die übergeordnete Komponente an die untergeordnete Komponente übergeben wird Komponente B.

15. Mixin

 76c82f278ac045591c9159d381de2c57
 e50fd76c890a16356472f13b52f09dcd
 93f0f5c25f18dab9d176bd4f6de5d30e
     a80eb7cbb6fff8b0ff70bae37074b813
     b2386ffb911b14667cb8f0f91ea547a7Hello,world6e916e0f7d1e588d4f442bf645aedb2f
     61eeee6dc069be0af6ec30e499aa96232cacc6d41bbb37262a98f745aa00fbf0
     ae137d68d2726eef3a3ab8fd02db82ac2cacc6d41bbb37262a98f745aa00fbf0
     6c01d1e7f9c8f4169484bfc77d321ec62cacc6d41bbb37262a98f745aa00fbf0
 9c3bca370b5104690d9ef395f2c5f8d1
 6c04bd5ca3fcae76e30b72ad730ca86d
     9461ebfd72f621e95575d38798f6304d94b3e26ee717c64999d7867364b1b4a3
     9d362b06220cee2dc15a3c815f80a61e         var SetInit = {             handleClick:function(e){                 console.log(e.target.value);             }         }         var Hello = React.createClass({             //这里命名必须为mixins
             mixins:[SetInit],             render:function(){                 return 84c464c714467c62ed8a7b74d3934788             }         });         var a = ReactDOM.render(b242f848c3983ea1d4adbc5496a81c19,document.getElementById("root"));
     2cacc6d41bbb37262a98f745aa00fbf0
 36cc49f0c466276486e50c850b7e4956
 73a6ac4ed44ffec12cee46588e518a5e

Mixin-Instanz

Vor- und Nachteile:

 76c82f278ac045591c9159d381de2c57
 e50fd76c890a16356472f13b52f09dcd
 93f0f5c25f18dab9d176bd4f6de5d30e
     a80eb7cbb6fff8b0ff70bae37074b813
     b2386ffb911b14667cb8f0f91ea547a7Hello,world6e916e0f7d1e588d4f442bf645aedb2f
     61eeee6dc069be0af6ec30e499aa96232cacc6d41bbb37262a98f745aa00fbf0
     ae137d68d2726eef3a3ab8fd02db82ac2cacc6d41bbb37262a98f745aa00fbf0
     6c01d1e7f9c8f4169484bfc77d321ec62cacc6d41bbb37262a98f745aa00fbf0
 9c3bca370b5104690d9ef395f2c5f8d1
 6c04bd5ca3fcae76e30b72ad730ca86d
     9461ebfd72f621e95575d38798f6304d94b3e26ee717c64999d7867364b1b4a3
     9d362b06220cee2dc15a3c815f80a61e         var BindingMixin = {             handleChange:function(name){                 var that = this;                 return function(e){                     var news = {};                     news[name] = e.target.value;                     that.setState(news);                 }             }         };         var Example = React.createClass({             //这里命名必须为mixins
             mixins:[BindingMixin],             getInitialState:function(){                 return {                     text:''                 }             },             render:function(){                 return e388a4556c0f65e1904146cc1a846bee
                     5985a603fea88064e808209d741039f4
                     e388a4556c0f65e1904146cc1a846bee{this.state.text}94b3e26ee717c64999d7867364b1b4a3
                 94b3e26ee717c64999d7867364b1b4a3             }         });         var a = ReactDOM.render(a7e09b9eeb1a809bc82d2666b8e06659,document.getElementById("root"));
     2cacc6d41bbb37262a98f745aa00fbf0
 36cc49f0c466276486e50c850b7e4956
 73a6ac4ed44ffec12cee46588e518a5e

mixin

16. Steuerbare Komponenten und unkontrollierbare Komponenten

Steuerbare Komponenten haben keinen Wert. Fest codiert, wie etwa value={this.state.value}.

Unkontrollierbar ist das Gegenteil.

Versuchen Sie, steuerbare Komponenten zu verwenden

Aufgetretene Probleme:

1. Im Konfigurationselement wepack.config.js, da der Loader im Modul über mehrere Konfigurationselemente verfügt Es sollten Loader sein, aber ich habe Loader geschrieben, was dazu führte, dass die nachfolgenden Konfigurationselemente nicht wirksam wurden und viele Kompilierungsprobleme auftraten. . .

2. Vergessen Sie im Return-Tag im Rendering der Komponente, / am Ende des Tags einzugeben. Beispielsweise wird e388a4556c0f65e1904146cc1a846bee94b3e26ee717c64999d7867364b1b4a3 geschrieben ;p> React erkennt es als zwei. Wenn ein p-Tag verwendet wird, wird ein eingebetteter JSX-Inhalt gemeldet.

3 Alle ungepaarten Tags im Rendering müssen geschlossen sein, wie zum Beispiel: 076402276aae5dbec7f672f8f4e5cc81 0f0306f9b187f2e363126bc29c8b1420 andernfalls wird ein Fehler gemeldet: eingebettet: Erwartetes entsprechendes JSX-Schließtag für

4. Eine sehr interessante Sache: Wenn ich in einer bestimmten Funktion ein bestimmtes Attribut setze, wird das Attribut nicht angezeigt Das korrekte Ergebnis wird sofort ausgedruckt. Das richtige Ergebnis liegt in der Funktion „componentDidUpdate“, das heißt, warten Sie, bis die Komponente aktualisiert ist, bevor Sie sie ausdrucken.

5. Wenn die Requisite der untergeordneten Komponente in der übergeordneten Komponente aktualisiert wird, fügen Sie diese Requisite bitte nicht als Eigenschaft in die Funktion getInitialState ein, da die Requisite bei einer Aktualisierung der Requisite nicht aktualisiert wird Eigenschaften im Bundesstaat (Sie können die Tabelle in 11 anzeigen).

6. Wenn Sie die es6-Syntax verwenden, also die Methode zum Erben von React.Component zum Erstellen von Komponenten verwenden, können Sie die Funktion getInitialState() nicht verwenden und es wird eine Warnung angezeigt: Warnung: getInitialState wurde definiert auf TodoApp, einer einfachen JavaScript-Klasse. Dies wird nur für Klassen unterstützt, die mit React.createClass erstellt wurden. Wollen Sie eine Statuseigenschaft definieren? stattdessen?

Lösung: Konstruktor festlegen

constructor(props){
  super(props);
      this.state = {
    example:&#39;example&#39;,
  }
}

Dieser Artikel endet hier (wenn Sie mehr sehen möchten, besuchen Sie die Spalte „React User Manual“ der PHP-Website, um mehr zu erfahren) Wenn Sie Fragen haben, können Sie unten eine Nachricht hinterlassen.

Das obige ist der detaillierte Inhalt vonWelche Kenntnisse sollte ich über React lernen? Zusammenfassung der Reaktionswissenspunkte (mit vollständigen Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn