Ist es ein guter Weg, um private Variablen und Methoden in React.js
Habe ich bemerkt, dass ich verwenden könnte, private Variablen wie diese:
var Hello = React.createClass(new (function(){
var name;
this.getInitialState = function() {
name = "Sir " + this.props.name;
return null;
};
this.render = function() {
return <div>Hello {name}</div>;
};
})());
React.render(<Hello name="World" />, document.getElementById('container'));
Warum sollte ich das nicht tun?
Danke für jede Hilfe
InformationsquelleAutor melanke | 2015-09-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, dass es etwas falsch mit ihm. Die syntax ist ein bisschen funky, aber es ist ein schlauer trick.
Ich würde die Frage der Notwendigkeit für eine wirklich private variable. Ich kann nur denken, der zwei Gründe, warum jemand wollen, aber beide können entlarvt werden.
1) Sie machen eine Bibliothek, die konsumiert werden, von anderen... Wenn jemand stochern in Ihrem Bibliotheks-code, wo Sie nicht sein soll, Ihre entweder brechen Ihre eigenen Erfahrungen oder arbeiten rund um bugs, die Sie gefunden haben in Ihrem code. So oder so, kein Schaden für Sie oder andere. Schlimmer Fall, Sie brechen Ihre eigenen app. Private Variablen, die Links einen wirklich schlechten Geschmack in meinem Mund kommt von Flex. JavaScript-die Offenheit ist ein Hauch frischer Luft IMO.
2) Sie möchten, blenden Sie private Daten in Ihre app... Mit modernen Browsern, alles in JavaScript werden, können überprüft und modifiziert zur Laufzeit. Es ist unmöglich, sich zu verstecken Daten von Nutzern, die in JavaScript. Sie können nur die Dinge schwer zu finden.
Weiß ich, diese alternative ist nicht wirklich privat, aber die Benutzung ist die gleiche. Da bin ich kein großer fan von kämpfen hart, um Dinge zu machen, privaten, werde ich es trotzdem. ;g)
Ich verstehe. Ich Schreibe viel Java. Aber es ist einfach nicht die Art, wie die Dinge sind normalerweise in JS. Die meisten Male, die ich kümmern sich nicht über das Innenleben der Bibliothek. Aber in dem seltenen Fall, dass ich nicht egal, ich versuche zu verspotten, mit einer schlecht gestalteten Bibliothek und die privaten Variablen / anon-Funktionen verhindern, dass mir beim schreiben ein gutes Gerät zu testen oder einfach nur die Arbeit, um einen Fehler... IMO, es ist verwandt mit "final" - Methoden in Java (in den meisten frameworks sind unmockable).... Wenn Sie denken, Sie brauchen, private Daten schützen devs, ich würde schauen bei Ihrer Entwickler oder Ihrer Bibliothek nicht die Kodierung Prinzipien.
InformationsquelleAutor Jeff Fairley
Wenn Sie es7, können Sie definieren Eigenschaften der Klasse als private Variablen wie diese:
Verwenden Sie babel kompilieren Sie Ihren code mit Stufe 0
Babel kompilieren Sie es in
this.name
, kompilieren online, so dass Sie sind Recht, es ist eine öffentliche variableDas ist immer noch zu öffentlich sein. TypeScript fügt Zugriffsmethoden, so dass Sie tun können
private name: string = "Jack";
aber AFAIK, das wird nicht unterstützt von ES7 in keiner Weise.InformationsquelleAutor xcatliu
Private vars sind perfekt, wenn Sie benötigen lokale (private) Status-Informationen für eine Komponente, die NICHT geändert oder beziehen sich auf das Rendern direkt. Halten Sie im Verstand, die meisten Dinge tun, ändern, Rendern, so habe ich festgestellt, dass ich private vars selten.
Beachten Sie auch, wenn Sie eine variable hinzufügen, um die Klasse, wie Sie getan, es ist ein singleton, so wird es sein, gemeinsam mit allen Instanzen dieser Komponente. Dies kann zu Problemen führen, wenn die wirklich wollen, etwas eigenes für jede Instanz -- wenn es das ist, was Sie wollen, dann müssen Sie erklären es in einem der lifecycle-Methoden für die Komponente vielleicht so
InformationsquelleAutor LMS5400