Ich habe ein React-Element mit einem Namen Attribut und Kind Text, die beide aus dem gleichen Wert in Requisiten genommen werden. React nicht aktualisieren Attribut beim Neu-Rendering
Wenn eine Komponente mit einem anderen prop Wert Reagieren wieder Rendering, nur das Kind Text aktualisiert wird, aber der Name Attribut bleibt gleich:
var Inner = React.createClass({
render: function() {
var name = this.props.name;
return (<div name={name}>{name}</div>);
}
});
React.render(<Inner name="red"/>, document.getElementById('outer'));
// element is now <div name="red" data-reactid=".0">red</div>
React.render(<Inner name="green"/>, document.getElementById('outer'));
// element is now <div name="red" data-reactid=".0">green</div>
Wie Sie sehen können, nach dem zweiten Aufruf React.render
, das Attribut name ist immer noch rot. (siehe http://jsfiddle.net/chyp9mxL/)
Dieses Problem kann durch Hinzufügen einer key={name}
in der Render-Funktion behoben werden, aber ich sehe nicht, warum ich muss. Werden Schlüssel nicht benötigt, wenn wir mehrere Komponenten haben? Wir haben nur einen hier.
Ich versuche herauszufinden, warum Sie zwei 'React.render()' haben ... – Chris
Dies funktioniert gut mit der neuen Version von react und react-dom. Also, schließen Sie read-dom ein und rufen Sie ReactDOM.render statt React.render auf und das sollte es tun. –
@Chris Nur um das einfachste Beispiel zur Veranschaulichung des Problems zu bieten. Ich stelle mir vor, dass im zweiten Leben der zweite Render durch eine Benutzeraktion ausgelöst wird. – jmak