Ich bin noch ein bisschen neu zu React, und ich finde es großartig, aber eine Sache ist momentan in meinen Gedanken und ich würde gerne wissen, was ich davon halten soll.Sollte ich eine Null-Statusvariable in einer React-Komponente initialisieren?
Zum Beispiel mache ich eine Checkout-Komponente, wo ich ein Reduktions-Coupon-Feld habe.
gebe ich den aktuellen Preis von meiner Veranstaltung zum Coupon, so dass es die neue berechnen kann:
{this.state.showCouponField ? (
<CouponForm
validateCoupon={(coupon) => this.setState({ coupon: coupon })}
initialValue={this.state.coupon ? this.state.coupon.token : ''}
initialPrice={this.state.event.final_price}
setReducedPrice={(reducedPrice) => this.setState({ reducedPrice })}
/>
) : null}
und dann Anzeige:
<p className="lead">
Total :
<span className="pull-right">
{this.state.reducedPrice ? (
<span>
<s>
{isFree ? 'Gratuit' : `${event.real_final_price * this.state.participants} €`}
</s>
{this.state.reducedPrice === 0 ? 'Gratuit' : `${this.state.reducedPrice/100 * this.state.participants} €`}
</span>
) : (
<span>
{isFree ? 'Gratuit' : `${event.real_final_price * this.state.participants} €`}
</span>
)}
</span>
</p>
Aber zum Beispiel die Variable reducedPrice
null ist bis jemand einen Gutschein benutzt.
Die Frage ist: ist es eine gute Praxis, die reducedPrice
den Ausgangszustand
constructor(props) {
super(props);
this.state = {
event: null,
creditCards: [],
selectedCardId: null,
addCreditCard: false,
participants: 1,
coupon: null,
total: 0,
error: null,
loading: false,
bookingId: null,
user: null,
showCardOptions: false,
showModal: false,
modalUrl: null,
};
this.updatePaymentMeans = this.updatePaymentMeans.bind(this);
}
Alle diese null Variablen scheinen nutzlos für mich zu setzen, wie sie standardmäßig et leer sind, werden sie nicht benötigt - oder ich habe Noch ein Fehler zu sehen - initialisiert werden, weil der Zustand ein Objekt ist, so dass es im laufenden Betrieb erstellt werden kann.
Ich weiß, dass ich einige davon vergessen werde, also frage ich mich, ob ich sie nicht einfach so einstellen würde, dass es deutlich brechen würde, wenn ich einen vermisse.
Offene Frage: D
Vielen Dank für Ihre Sicht. Ich folge intuitiv auch deinem Muster, aber es fühlt sich manchmal etwas überwältigend für die winzigen Menüs, die winzigen Animationen an. Ich denke, ich könnte etwas in kleinere Komponenten destrukturieren, um weniger mit so vielen Variablen gefüllt zu fühlen ... –
@Florent du hast recht, siehe f8app ich oben verlinkt, das ist eine professionelle App. Sie verwenden selten mehr als zwei Zustände pro Komponente. Für lange Formen siehe Redux-Form – zurfyx