web-dev-qa-db-fra.com

react-redux: Quelle est la différence entre state.setIn () et state.set ()?

J'ai vu l'utilisation de setInt () et set () dans du code react-redux:

state.setIn(...);
state.set(...);

J'ai trouvé de la documentation ici https://facebook.github.io/immutable-js/ .__ Mais, malheureusement, la méthode n'est pas documentée en détail.

J'ai également trouvé d'autres questions: Utilisation de l'aide immuable de React avec Immutable.js Mais elles ne répondent pas à ma question.

Je comprends que cela doit faire des choses immuables? Mais quelle est la chose immuable ici? Et quelle est la différence entre set () et setIn ()? Pourquoi avons-nous besoin immuable?

15
Matthias M

La méthode set immuable ne définit que les propriétés immédiates, c.-à-d. enfants directs de l'objet. Un setIn vous permet de définir la valeur de tout noeud profond dans les données. set prend uniquement le nom de la propriété. setIn prend un tableau de clés/index pour atteindre l'élément profondément imbriqué.

var basket = Immutable.Map({"milk":"yes", "flour":"no"});

basket = basket.set("flour", "yes");

basket = Immutable.Map({"fruits":{"oranges":"no"}, "flour":"no"});

basket = basket.setIn(["fruits", "oranges"], "yes");

Les méthodes getIn/setIn sont extrêmement utiles lors de la mise à jour des états dans les magasins, car vous pouvez utiliser des actions génériques et fournir les chemins de clé aux composants enfants. Ils peuvent appeler les actions en passant les chemins en tant que paramètres.

27
hazardous