2016-03-30 4 views
0

In geordnete Komponente Warnung App I Kind Komponente PersonsTable machen:Reagieren des SetProps() ist veraltet

var App = React.createClass({ 
    addPerson: function() { 
     // building personToAdd object and passing to personsTable... 
     this.refs.personsTable.setState({personToAdd: person}); 
    }, 

    render: function() { 
     return (
     <div> 
      <PersonsTable ref="personsTable" /> 
      ... 
     </div> 
    ); 
    }, 
    }); 

Jetzt bin ich vorbei, ein neues Objekt von setState Methode der PersonsTable aufrufen. Wenn ich SetProps Methode aufrufen, gibt es eine Warnung

Uncaught unveränderliche Verletzung: SetProps (...): Sie setProps mit einem Elternteil auf eine Komponente aufgerufen. Dies ist ein Anti-Pattern, da Requisiten beim Rendern reaktiv aktualisiert werden. Ändern Sie stattdessen die render-Methode des Besitzers, um den korrekten Wert als Requisite an die Komponente zu übergeben, in der er erstellt wurde.

Wie kann ich so richtig ein Objekt zu PersonsTable passieren, ohne setState Methode? Hier

ist voll Code https://jsfiddle.net/jpt5uy1k/

Antwort

1

Es sieht aus wie Sie versuchen, ein Anti-Muster zu implementieren, indem setState auf ref aufrufen. Es ist besser, Requisiten an das Kind zu übergeben und diese zu benutzen. Wenn du state benötigst, setze es in einen Elternteil und gib es als Requisite weiter.

<div> 
     <PersonsTable aProp={someCoolInfoOrParentState} /> 
     ... 
    </div> 

Refs sollten nur verwendet werden, wenn Sie brauchen, um „ausstrecken“ und für einen oder anderen Grund hält, einen tatsächlichen DOM-Knoten erhalten. Außerdem möchten Sie in der Regel an so wenigen Orten wie möglich Staat, da es kompliziert sein kann und zusätzliche "Maschinen" benötigt, um Arbeit zu machen. Es ist besser, den Zustand an einem einzigen Ort zu halten und ihn durch andere Komponenten zu führen.

Sehen Sie diese von https://github.com/reactjs/react-basic:

Wir neigen dazu, unser Datenmodell zu bevorzugen unveränderlich zu sein. Wir fädeln Funktionen durch, die den Status als einzelnes Atom an der Spitze aktualisieren können.