Also entschied ich mich ImmutableJS für die Arbeit mit Redux zu verwenden. Jetzt frage ich mich, ob es bequem ist, es zur Verwaltung der React Component state
zu verwenden. I codiert folgendes:ImmutableJS für den Zustand der React-Komponente
class Navigation extends React.Component {
constructor(props) {
super(props);
const $$fixedLinks = Immutable.fromJS(this.props.fixedLinks);
const $$dynamicLinks = Immutable.fromJS(this.props.dynamicLinks);
this.state = {
fixedLinks: this.addHrefs($$fixedLinks),
dynamicLinks: this.addHrefs($$dynamicLinks),
};
}
// Given a list of shape (id, name) we need to
// add href for the links
addHrefs = list => list.map(item => item.set('href', toUnderscore(item.get('name'))))
render() {
const fixed = this.state.fixedLinks.map(
link => (
<Link key={link.get('id')} href={`#${link.get('href')}`} title={link.get('name')} />
),
);
const dynamic = this.state.dynamicLinks.map(
link => (
<Link key={link.get('id')} href={`#${link.get('href')}`} title={link.get('name')} />
),
);
return (
<Anchor>
{fixed}
{dynamic}
</Anchor>
);
}
}
Wie Sie $$
zeigt ein unveränderliches Objekt sehen. Aber dann möchte ich eine neue Eigenschaft hinzufügen mit addHrefs
und speichern Sie es unter state
.
Es funktioniert wie ein Charme. Aber es ist ein bisschen akward das folgende:
<Link key={link.get('id')} href={`#${link.get('href')}`} title={link.get('name')} />
sehen? Verwenden von get()
zum Abrufen von Werten aus dem unveränderlichen Objekt. Jetzt
, einige Fragen:
- Ist es eine gute Idee (oder Ansatz) zu verwenden
ImmutableJS
für die Verwaltung von Zustand inReact.Component
? Wenn ichImmutableJS
für diesen Zweck verwenden kann, solltethis.state
ein unveränderliches Objekt sein? wenn ja, wie geht man mitthis.setState()
um? - Wenn nicht, kann ich nicht
loadash
verwenden, da es nicht mitImmutableJS
funktionieren wird, wie kann ich mit unveränderlichen Zuständen beschäftigen innerhalbReact.Component
?
Vielen Dank wirklich nützliche Antwort. Ich kam nach dem Posten zu den reaktiven Dokumenten, und es gab die Antwort auf "Umgang mit" setState ". – FacundoGFlores