J'ai donc décidé d'utiliser ImmutableJS pour travailler avec Redux. Maintenant, je me demande s'il est pratique de l'utiliser pour gérer le composant React state
. Je codé comme suit:ImmutableJS pour l'état du composant React
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>
);
}
}
Comme vous pouvez le voir $$
indique un objet immuable. Mais alors je veux ajouter une nouvelle propriété avec addHrefs
et l'enregistrer à state
.
Il fonctionne comme un charme. Mais il est un peu maladroite ce qui suit:
<Link key={link.get('id')} href={`#${link.get('href')}`} title={link.get('name')} />
voir? En utilisant get()
pour obtenir des valeurs de l'objet immuable.
Maintenant, quelques questions:
- Est-ce une bonne idée (ou approche) à utiliser pour la gestion
ImmutableJS
étatReact.Component
? - Si je peux utiliser
ImmutableJS
à cette fin,this.state
devrait être un objet immuable? Si oui, comment faire face àthis.setState()
? - Sinon, je ne peux pas utiliser
loadash
car il ne fonctionnera pas avecImmutableJS
, comment puis-je traiter avec les états immuables dansReact.Component
?
Merci vraiment la réponse utile. Je suis venu aux documents de réaction après l'affichage, et il y avait la réponse à "traiter avec" setState ". – FacundoGFlores