Sagen Sie den Zustand unserer Applikationsbehälter so ist (direkt aus dem Server):Redux Präsentations Eigenschaften ähnlich wie Dekorateur Muster
[
{first: 'tyrion', last: 'lannister', email: '[email protected]'},
{first: 'jaime', last: 'lannister', email: '[email protected]'}
]
Wir geben unsere Daten bis auf die Präsentations-Komponente, aber die Designer haben für ein gefragt Großgeschriebener vollständiger Name und verschleierte E-Mail.
So wollen wir so etwas wie machen:
<div>
<p>Tyrion Lanniser - [email protected]***.com</p>
<p>Jaime Lanniser - [email protected]***.com</p>
</div>
Wie sollte wir behandeln rein Präsentations Transformationen der Daten in der Reaktion/Redux Welt?
aus der Rails Welt kommt, würde ich wie unter einer Dekorateur Funktion in der Präsentationskomponente hinzuzufügen, so dass sie die Präsentationskomponente Verantwortung sind Eigenschaften hinzuzufügen, die gemacht werden, ... nicht die Minderer oder Container-Komponente:
const decorate = (person)=> {
return {
...person,
_full_name: capitalize(person.first_name + ' ' + person.last_name),
_email: obfuscate(person.email)
}
}
# ...
constructor(props) {
super(props)
state = {
persons: this.props.persons.map((person)=> decorate(person))
}
}
Aber das scheint ein Anti-Pattern zu sein? Warum? Was sind die Schattenseiten dieses Ansatzes? Diese fühlt sich sauber zu mir, da die zugrunde liegenden Daten/Status nicht geändert wird, die untergeordnete Komponente, fügt einfach Präsentationseigenschaften zu den Daten, die es empfängt.
Vielleicht über Ihre Frage, die ich bin verwirrt. Wenn Sie die Daten über Ajax abrufen, speichern Sie es im Redux-Store richtig? Verbinden Sie dann Ihre Präsentationskomponente mit Ihrem Geschäft? – azium
Außerdem macht der Satz: "render die Daten .. im Reducer/Container" keinen Sinn. Am Ende des Tages, es ist immer eine Präsentation Komponente, die Sachen zu rendern – azium
Ja, diese Frage geht davon aus, dass alles "süchtig" ist und RAW-Server-Daten im Redux-Shop ist. Ich versuche nur Details zu Präsentationseigenschaften (Groß-/Kleinschreibung, Verschleierung, Formatierung usw.) zu erhalten. – daino3