Inhaltsverzeichnis
Einige detaillierte Wissenspunkte in React: " >Einige detaillierte Wissenspunkte in React:
Heim Web-Frontend js-Tutorial Einige Details der Reaktion, die Ihnen vielleicht noch nicht aufgefallen sind! (Zusammenfassen)

Einige Details der Reaktion, die Ihnen vielleicht noch nicht aufgefallen sind! (Zusammenfassen)

Feb 11, 2021 am 08:55 AM
javascript react

Sind Ihnen diese Details schon einmal in der Reaktion aufgefallen? Der folgende Artikel fasst einige Details von React zusammen, die Ihnen möglicherweise nicht aufgefallen sind. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Einige Details der Reaktion, die Ihnen vielleicht noch nicht aufgefallen sind! (Zusammenfassen)

[Verwandte Tutorial-Empfehlungen: React-Video-Tutorial]

Einige detaillierte Wissenspunkte in React:

1. Die Verwendung von Get-In-Komponenten (als Getter für Klassen)

ES6-Wissen: Klassenklassen haben auch ihre eigenen Getter und Setter, die wie folgt geschrieben sind:

Class Component {
     constructor() {
         super()
         this.name = ''
    }    
    
    // name的getter
    get name() {
        ...
    }

    // name的setter
    set name(value) {
        ...
   }
}
Nach dem Login kopieren

Die Verwendung von get in Reaktionskomponenten ist wie folgt:

/*
 *  renderFullName的getter 
 *  可以直接在render中使用this.renderFullName
 */ 

get renderFullName () {
  return `${this.props.firstName} ${this.props.lastName}`;
}

render() {
    return (
          <div>{this.renderFullName}</div>
    )   
}
Nach dem Login kopieren

Was ist also die Verwendung von Gettern in Reaktionskomponenten? ?

constructor (props) {
    super()
    this.state = {};
  }

    
  render () {
    // 常规写法,在render中直接计算 
    var fullName = `${this.props.firstName} ${this.props.lastName}`;

    return (
      <div>
        <h2>{fullName}</h2>
      </div>
    );
  }
Nach dem Login kopieren
// 较为优雅的写法:,减少render函数的臃肿
renderFullName () {
  return `${this.props.firstName} ${this.props.lastName}`;
}

render () {
  var fullName = this.renderFullName()   <div>{ fullName }</div> }
Nach dem Login kopieren
// 推荐的做法:通过getter而不是函数形式,减少变量
get renderFullName () {
  return `${this.props.firstName} ${this.props.lastName}`;
}

render () {
   <div>{ this.renderFullName  }</div> 
}
Nach dem Login kopieren

Wenn Sie Vue kennen, dann kennen Sie die berechnete Eigenschaft berechnet: {}, die unten auch Getter verwendet, aber der Getter des Objekts ist nicht der Getter der Klasse

// 计算属性,计算renderFullName
computed: {
    renderFullName: () => {
         return `${this.firstName} ${this.lastName}`;
    }
}
Nach dem Login kopieren

Vues berechnete Eigenschaft hat einen Vorteil:

Berechnete Eigenschaften versus Funktionsausführung: Zur Reduzierung der Berechnungen wird es eine Zwischenspeicherung geben ---> Berechnete Eigenschaften werden nur dann neu ausgewertet, wenn sich ihre zugehörigen Abhängigkeiten ändern.

Das bedeutet, dass mehrere Zugriffe auf die berechnete Eigenschaft „renderFullName“ sofort das vorherige Berechnungsergebnis zurückgeben, ohne dass die Funktion erneut ausgeführt werden muss, solange sich „firstName“ und „lastName“ nicht geändert haben.

Hat der Getter von React also auch den Vorteil des Cachings? ? ? Die Antwort lautet: Nein, der Getter in React führt keine Caching-Optimierung durch!

2. Komponentenattr und Ereignisausführungssequenz:

A. Eltern-Kind-Komponenten: In Form von Requisiten gibt das Elternteil es an das Kind weiter

B. Dieselbe Komponente: Die Rückseite bedeckt die Vorderseite .

Damit attr auf der Grundlage der oben genannten Regeln das höchste Gewicht hat, sollte es in der untersten Komponente platziert werden und die Position sollte so weit hinten wie möglich liegen.

<-- 父组件Parent | 调用子组件并传递onChange属性 -->
<div>
    <Child  onChange={this.handleParentChange} />
</div>

<-- 子组件Child | 接收父组件onChange, 自己也有onChange属性 -->
<input {...this.props} onChange={this.handleChildChange}  />
Nach dem Login kopieren

Zu diesem Zeitpunkt führt der von der Child-Komponente ausgeführte onChange nur das handleChildChange-Ereignis aus und das handleParentChange-Ereignis wird nicht ausgeführt.

  • 1 Was ist, wenn Sie nur handleParentChange ausführen müssen? ? In der Eingabe {...this.props} und onChange={this.handleChildChange} Position ändern.
  • 2. Was ist, wenn beide Ereignisse ausgeführt werden müssen? ?组 Führen Sie This.props.handleParentchange
3 in der Form von ES6 in der childlechildChange

in der untergeordneten Komponente aus. ) {} Der Unterschied:

export default Class Child extends Component {
    constructor (props) {
        super()
        this.state = {};
   }

    // 写法1,这是ES6的类的方法写法
    fn1() {
         console.log(this)
        // 输出 undefined
    }
 
    // 写法2,这是react的方法写法
    fn2 = () => {
         console.log(this)
         // 输出:Child {props: {…}, context: {…}, refs: {…}, …}
    }

   render () {
        return (
          <div>
               <button onClick={this.fn1}>fn1方法执行</button >
               <button onClick={this.fn2}>fn2方法执行</button >
          </div>
         );
   }
}
Nach dem Login kopieren
kann in zwei Schreibweisen gesehen werden: und dieser Punkt in der Funktion ist anders.

Dann haben sie nichts gemeinsam? ? , Die folgenden drei Situationen sind gleich:

Fall 1: Wenn dies nicht innerhalb der Funktion verwendet wird, sind die beiden gleich.

// 写法1,这是ES6的类的方法写法
    fn1() {
        return 1 + 1
    }
 
    // 写法2,这是react的方法写法
    fn2 = () => {
         return 1 + 1
    }
Nach dem Login kopieren

Fall 2: Wenn beide direkt im Render ausgeführt werden.

// 写法1,这是ES6的类的方法写法
    fn1() {
         console.log(this)
        // Child {props: {…}, context: {…}, refs: {…}, …}
    }
 
    // 写法2,这是react的方法写法
    fn2 = () => {
         console.log(this)
         // 输出:Child {props: {…}, context: {…}, refs: {…}, …}
    }

   render () {
        return (
          <div>
               <button onClick={() => {
                        this.fn1();
                }}>fn1方法执行</button >

               <button onClick={() => {
                        this.fn2();
                }}>fn2方法执行</button >
          </div>
         );
   }
Nach dem Login kopieren

Fall 3: Geben Sie this.fn2.bind(this) an, binden Sie diesen Aktionskontext.

// 写法1,这是ES6的类的方法写法
    fn1() {
         console.log(this)
        // Child {props: {…}, context: {…}, refs: {…}, …}
    }
 
    // 写法2,这是react的方法写法
    fn2 = () => {
         console.log(this)
         // 输出:Child {props: {…}, context: {…}, refs: {…}, …}
    }

   render () {
        return (
          <div>
               <button onClick={this.fn1}>fn1方法执行</button >

               <button onClick={this.fn2.bind(this)}>fn2方法执行</button >
          </div>
         );
   }
Nach dem Login kopieren
Bitte nicht mit der Methodenabkürzung von Objekt in ES6 verwechseln. Das Folgende ist die Methodenabkürzung von Objekt Objekt:

阮一峰ES6: http://es6.ruanyifeng.com/#docs/object

4. Array im Listen-RenderingReferenz: https://doc.react-china.org/docs/lists-and-keys.html

Die normale JSX-Schreibmethode ist das Schreiben So etwas in der Render-HTML-Syntax, verschachtelte Tags

, wenn es js gibt, verwenden Sie { geschweifte Klammern }.

Aber ich weiß nicht, ob Ihnen aufgefallen ist, dass

Arrays in Tags verschachtelt werden können und normal gerendert werden können.

function NumberList(props) {
    const numbers = [1,2,3,4,5];

    // listItems是数组numbers通过map返回的,本质也是个数组。 
    const listItems = numbers.map((number) =>
        <li>{number}</li>
    );

    return (
        <ul>
             // 可以替换成 [ <li>1</li>,  <li>2</li>,  .....]
             {listItems}
        </ul>
    );
}
Nach dem Login kopieren
Wie oben gezeigt, kann das Array innerhalb des Tags korrekt gerendert werden, dann gibt es die folgende Schreibmethode:

renderItem(name) {
    const A = <li key={&#39;a&#39;}>A</li>, 
             B = <li key={&#39;b&#39;}>B</li>, 
             C = <li key={&#39;c&#39;}>C</li>, 
             D = <li key={&#39;d&#39;}>D</li>;
     let operationList;

     switch (name) {
        case 1:
            operationList = [A , B,  C]
           break;
        case 2:
            operationList = [B,  C, D]
            break;
        case 0:
           operationList = [A]
           break;
    }
    return operationList;
}

render() {
   // this.renderItem() 执行结果是数组
    return (
         <ul>{  this.renderItem() }</ul>
    )
}
Nach dem Login kopieren

更多编程相关知识,请访问:编程视频!!

Das obige ist der detaillierte Inhalt vonEinige Details der Reaktion, die Ihnen vielleicht noch nicht aufgefallen sind! (Zusammenfassen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

PHP, Vue und React: Wie wählt man das am besten geeignete Frontend-Framework aus? PHP, Vue und React: Wie wählt man das am besten geeignete Frontend-Framework aus? Mar 15, 2024 pm 05:48 PM

PHP, Vue und React: Wie wählt man das am besten geeignete Frontend-Framework aus? Angesichts der kontinuierlichen Weiterentwicklung der Internettechnologie spielen Front-End-Frameworks eine wichtige Rolle bei der Webentwicklung. PHP, Vue und React sind drei repräsentative Frontend-Frameworks, jedes mit seinen eigenen einzigartigen Eigenschaften und Vorteilen. Bei der Auswahl des zu verwendenden Frontend-Frameworks müssen Entwickler eine fundierte Entscheidung treffen, die auf den Projektanforderungen, Teamfähigkeiten und persönlichen Vorlieben basiert. In diesem Artikel werden die Eigenschaften und Verwendungsmöglichkeiten der drei Front-End-Frameworks PHP, Vue und React verglichen.

Integration von Java-Framework und Front-End-React-Framework Integration von Java-Framework und Front-End-React-Framework Jun 01, 2024 pm 03:16 PM

Integration von Java-Framework und React-Framework: Schritte: Richten Sie das Back-End-Java-Framework ein. Projektstruktur erstellen. Konfigurieren Sie Build-Tools. Erstellen Sie React-Anwendungen. Schreiben Sie REST-API-Endpunkte. Konfigurieren Sie den Kommunikationsmechanismus. Praxisfall (SpringBoot+React): Java-Code: RESTfulAPI-Controller definieren. Reaktionscode: Rufen Sie die von der API zurückgegebenen Daten ab und zeigen Sie sie an.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns häufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

Vue.js vs. React: projektspezifische Überlegungen Vue.js vs. React: projektspezifische Überlegungen Apr 09, 2025 am 12:01 AM

Vue.js eignet sich für kleine und mittelgroße Projekte und schnelle Iterationen, während React für große und komplexe Anwendungen geeignet ist. 1) Vue.js ist einfach zu bedienen und für Situationen geeignet, in denen das Team nicht ausreicht oder die Projektskala klein ist. 2) React hat ein reichhaltigeres Ökosystem und eignet sich für Projekte mit hoher Leistung und komplexen funktionalen Bedürfnissen.

JavaScript und WebSocket: Aufbau einer effizienten Echtzeitsuchmaschine JavaScript und WebSocket: Aufbau einer effizienten Echtzeitsuchmaschine Dec 17, 2023 pm 10:13 PM

JavaScript und WebSocket: Aufbau einer effizienten Echtzeit-Suchmaschine Einführung: Mit der Entwicklung des Internets stellen Benutzer immer höhere Anforderungen an Echtzeit-Suchmaschinen. Bei der Suche mit herkömmlichen Suchmaschinen müssen Benutzer auf die Suchschaltfläche klicken, um Ergebnisse zu erhalten. Diese Methode kann den Anforderungen der Benutzer an Echtzeit-Suchergebnissen nicht gerecht werden. Daher ist die Verwendung von JavaScript und WebSocket-Technologie zur Implementierung von Echtzeitsuchmaschinen zu einem heißen Thema geworden. In diesem Artikel wird die Verwendung von JavaScript ausführlich vorgestellt

See all articles