Heim Web-Frontend js-Tutorial Eine ausführliche Erklärung von Refs in React (ausführliches Tutorial)

Eine ausführliche Erklärung von Refs in React (ausführliches Tutorial)

Jun 05, 2018 pm 05:53 PM
react refs

Dieser Artikel stellt hauptsächlich das Tutorial zur Verwendung von Refs in React vor. Jetzt teile ich es mit Ihnen und gebe es als Referenz.

ref ist ein Attribut in React. Wenn die Renderfunktion eine Instanz einer Komponente zurückgibt, können Sie einem virtuellen DOM-Knoten im Render ein Ref-Attribut hinzufügen, wie im folgenden Code gezeigt:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<body>

  <script type="text/jsx">

    var App = React.createClass({

      render: function() {

        return (

          <p>

            <input type="text" placeholder="input something..." ref="input" />

          </p>

        );

      }

    });

    React.render(

      <App />,

      document.body

    );

  </script>

</body>

Nach dem Login kopieren

Im obigen Code gibt die Renderfunktion nur ein -Tag zurück und es gibt nur ein -Tag Attribut. Die offizielle Dokumentation erklärt das Ref-Attribut wie folgt:

Ref-Attribut

React unterstützt ein ganz besonderes Attribut, das Sie zum Binden an jede Komponente verwenden können, die render( ) Ausgänge steigen. Mit dieser speziellen Eigenschaft können Sie auf die entsprechende von render() zurückgegebene Hintergrundinstanz verweisen. Dadurch ist sichergestellt, dass Sie jederzeit die richtige Instanz erhalten.

Was ist der Zweck, das ref-Attribut auf das -Tag zu setzen? Das Folgende ist die Erklärung in der offiziellen Dokumentation:

Rufen Sie in anderem Code (normalerweise Ereignisbehandlungscode) die Backing-Instanz (Backing-Instanz) über this.refs ab, etwa so: this.refs.input. Unter diesen ist „input“ der Wert des ref-Attributs, das für das -Tag festgelegt wurde.

Über das ref-Attribut können wir auch den realen DOM-Knoten abrufen, der dem virtuellen DOM entspricht. Es gibt zwei Möglichkeiten, den realen DOM-Knoten abzurufen, wie im folgenden Code gezeigt:

1

2

3

4

5

6

<input type="text" ref="username" />

//下面4种方式都可以通过ref获取真实DOM节点

var usernameDOM = this.refs.username.getDOMNode();

var usernameDOM = React.findDOMNode(this.refs.username);

var usernameDOM = this.refs[&#39;username&#39;].getDOMNode();

var usernameDOM = React.findDOMNode(this.refs[&#39;username&#39;]);

Nach dem Login kopieren

Das Folgende ist eine Demo, um die Verwendung von ref zu verstehen:

Die Auswirkung der im Browser ausgeführten Demo ist wie folgt:

Geben Sie eine beliebige 1-in ein Das obere Eingabefeld Mit der Zahl 10 erhält das entsprechende Eingabefeld unter den folgenden 10 Eingabefeldern den Fokus. Wie im Bild oben gezeigt, erhält das dritte Eingabefeld unten sofort den Fokus. Das Ref-Attribut wird hier verwendet. und der Code lautet wie folgt:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>Refs</title>

  <script type="text/javascript" src="../react-0.13.0/build/react.js"></script>

  <script type="text/javascript" src="../react-0.13.0/build/JSXTransformer.js"></script>

</head>

<body>

  <script type="text/jsx">

    var App = React.createClass({

      handleChange: function(event) {

        var index = event.target.value;

        if(index >= 1 && index <= 10) {

          //找到对应的输入框并将焦点设置到里面

          var refName = "input" + index;

          //var inputDOM = React.findDOMNode(this.refs[refName]);

          var inputDOM = this.refs[refName].getDOMNode();

          inputDOM.focus();

        }

      },

      render: function() {

        var inputs = [];

        for(var i = 1; i <= 10; i++) {

          inputs.push(<p><li><input type="text" ref={"input" + i}/></li><br/></p>);

        }

        return (

          <p>

            <label htmlFor="input" >在这里输入下面任意输入框的索引,光标会自动定位到输入框内:</label>

            <input type="text" id="input" onChange={this.handleChange} />

            <hr />

            <ol>

              {inputs}

            </ol>

          </p>

        )

      }

    });

    React.render(

      <App />,

      document.body

    );

  </script>

</body>

</html>

Nach dem Login kopieren

In der Renderfunktion werden 10 Eingabefelder zum Hauptteil des HTML-Dokuments hinzugefügt. Das ref-Attribut jedes Eingabefelds ist auf ["index" + index] gesetzt. Rufen Sie dann in der Funktion handleChange des Eingabefelds die eingegebene Zahl und den Wert des Ref-Attributs ab. Suchen Sie schließlich anhand des Werts des Ref-Attributs den entsprechenden realen DOM-Knoten und lassen Sie ihn dann los Konzentrieren Sie sich.

Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

js-Erfahrung beim Teilen von JavaScript-Anti-Debugging-Fähigkeiten

Verwenden von node.js zum Packen von Webpacks

So verwenden Sie ein externes Modul im Webpack

Das obige ist der detaillierte Inhalt vonEine ausführliche Erklärung von Refs in React (ausführliches Tutorial). 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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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)

So erstellen Sie eine Echtzeit-Chat-App mit React und WebSocket So erstellen Sie eine Echtzeit-Chat-App mit React und WebSocket Sep 26, 2023 pm 07:46 PM

So erstellen Sie eine Echtzeit-Chat-App mit React und WebSocket

Leitfaden zur React-Front-End- und Back-End-Trennung: So erreichen Sie die Entkopplung und unabhängige Bereitstellung von Front-End und Back-End Leitfaden zur React-Front-End- und Back-End-Trennung: So erreichen Sie die Entkopplung und unabhängige Bereitstellung von Front-End und Back-End Sep 28, 2023 am 10:48 AM

Leitfaden zur React-Front-End- und Back-End-Trennung: So erreichen Sie die Entkopplung und unabhängige Bereitstellung von Front-End und Back-End

So erstellen Sie einfache und benutzerfreundliche Webanwendungen mit React und Flask So erstellen Sie einfache und benutzerfreundliche Webanwendungen mit React und Flask Sep 27, 2023 am 11:09 AM

So erstellen Sie einfache und benutzerfreundliche Webanwendungen mit React und Flask

So erstellen Sie eine zuverlässige Messaging-App mit React und RabbitMQ So erstellen Sie eine zuverlässige Messaging-App mit React und RabbitMQ Sep 28, 2023 pm 08:24 PM

So erstellen Sie eine zuverlässige Messaging-App mit React und RabbitMQ

So erstellen Sie eine schnelle Datenanalyseanwendung mit React und Google BigQuery So erstellen Sie eine schnelle Datenanalyseanwendung mit React und Google BigQuery Sep 26, 2023 pm 06:12 PM

So erstellen Sie eine schnelle Datenanalyseanwendung mit React und Google BigQuery

Anleitung zum Debuggen von React-Code: So finden und beheben Sie Front-End-Fehler schnell Anleitung zum Debuggen von React-Code: So finden und beheben Sie Front-End-Fehler schnell Sep 26, 2023 pm 02:25 PM

Anleitung zum Debuggen von React-Code: So finden und beheben Sie Front-End-Fehler schnell

React Router-Benutzerhandbuch: So implementieren Sie die Front-End-Routing-Steuerung React Router-Benutzerhandbuch: So implementieren Sie die Front-End-Routing-Steuerung Sep 29, 2023 pm 05:45 PM

React Router-Benutzerhandbuch: So implementieren Sie die Front-End-Routing-Steuerung

Leitfaden für reaktionsfähiges Design: So erzielen Sie adaptive Front-End-Layouteffekte Leitfaden für reaktionsfähiges Design: So erzielen Sie adaptive Front-End-Layouteffekte Sep 26, 2023 am 11:34 AM

Leitfaden für reaktionsfähiges Design: So erzielen Sie adaptive Front-End-Layouteffekte

See all articles