verwenden von innerHTML mit Reagieren

Habe ich eine mini-Rechner mit React.

Funktioniert es, aber ich bin mir nicht sicher, ob ich verstehe, warum. Könnte mir jemand zeigen gegenüber dem Konzept, dass ich nicht voll greifen hier.

Mein code ist unten.

Hier ist, was ich erwartet hatte:
Nach der ersten operation (erste mal das getResult Funktion ausgeführt wird) erwartet, dass ich zu schreiben, ein bedingtes, in der clearingState Funktion zum zurücksetzen der innerHTML von <div id="display" zu {this.state.string} als getResult Funktion, wird es auf die updateResult variable. Doch, es funktioniert, ohne dass ich mit dieser Einstellung. Ich verstehe nicht, warum.

Vielen Dank im Voraus..

<script type="text/babel">
  var Calculator = React.createClass({
      createString: function(event){
        var previousState = this.state.string;
        var target = event.target;
        var number = target.innerHTML;
        var newState = previousState+number;
        this.setState({string: newState});
      },
      clearingState: function(event){
        var newState = "";
        this.setState({string: newState});
      },
      getResult: function(){
        var stringResult = this.state.string;
        var updateResult = eval(stringResult);
        return document.getElementById("display").innerHTML = updateResult;
      },
      getInitialState: function(){
        return ({
          string: ""
        })
      },
      render: function(){
          return (
              <div>
                <div id ="display">{this.state.string}</div>
                <div id="main">
                    <div className="key zero" onClick={this.createString}>0</div>
                    <div className="key one" onClick={this.createString}>1</div>
                    <div className="key two" onClick={this.createString}>2</div>          
                    <div className="key three" onClick={this.createString}>3</div>
                    <div className="key four" onClick={this.createString}>4</div>
                    <div className="key five" onClick={this.createString}>5</div>
                    <div className="key six" onClick={this.createString}>6</div>
                    <div className="key seven" onClick={this.createString}>7</div>
                    <div className="key eight" onClick={this.createString}>8</div>
                    <div className="key nine" onClick={this.createString}>9</div>
                    <div className="key d" onClick={this.createString}>.</div>
                    <div className="key C" onClick={this.clearingState}>C</div>
                </div>
                <div id="operators">
                    <div className="key mp" onClick={this.createString}>*</div>
                    <div className="key dv" onClick={this.createString}>/</div>
                    <div className="key ad" onClick={this.createString}>+</div>
                    <div className="key sb" onClick={this.createString}>-</div>
                    <div className="key eq" onClick={this.getResult}>=</div>
                </div>
              </div>
          );
      }
  });

  ReactDOM.render(
    <Calculator/>,
    document.getElementById('calculator')
  )

Jedes mal, wenn Sie rufen setState Reagieren automatisch Anrufe render wieder (mit dem neuen Zustand). Aus Neugier, sind Sie mit dem Reagieren offiziellen docs als guide???
Man sollte nie die Notwendigkeit, manuell zu aktualisieren innerHTML in einer Anwendung Reagieren. Sie sollten nur anrufen setState lassen und Reagieren, Griff die Aktualisierung der DOM für Sie.
danke für Ihre Erklärung. Ersetzt habe ich diese: return document.getElementById("display").innerHTML = updateResult; mit diesem statt: this.setState({string: updateResult}); Und du hast Recht über die setState-und rendering. Ich verstehe immer noch nicht, obwohl, warum das Vorherige code funktionierte.. so wie es geschrieben wurde, bevor ich wirklich dachte, ich sei ein überschreiben der {dies.Zustand.string} mit meinem updateResult variable. Sorry, ich bin zu langsam Sie zu fangen, bis auf diese... Und ja, ich lese die docs, wenn auch nicht immer verstehen 🙂

InformationsquelleAutor Vera | 2015-12-29

Schreibe einen Kommentar