Zdá sa, že nemôžem zmeniť záznam nezmeniteľného súboru.js, ktorý je reduxovým úložiskom pre moju aplikáciu.
let makeVepo: RecordFactory<any> = Record({
product: new makeProduct(),
menu: new makeMenu(),
formControls: new makeFormControls(),
some: 10
})
export const vepo = new makeVepo()
vepo.set("some", 200)
vepo.some sa neaktualizuje na 200, zostáva 10
Môj redux obchod sa neaktualizuje z redukcie.
Malo by to fungovať. Keď sem vložím bod prerušenia:
Tu som manipuláciu stav v konzole, a to nie je pretrvávajú:
odpovede:
3 pre odpoveď č. 1Pokúšate sa mutovať nemeniteľný objekt. Keď tak urobíte vepo.set("some", 200)
, nemení sa vepo
, vráti nový objekt s hodnotou, ktorú ste priradili.
Môžete to vyskúšať:
const { Record } = require("immutable");
const makeVepo = Record({
product: "function",
menu: "function",
formControls: "function",
some: 10
})
const vepo = new makeVepo()
const newObject = vepo.set("some", 200)
console.log(vepo.toJS()) // `some` is still 10
console.log(newObject.toJS()) // `some` is 200
Vyskúšajte to npm runkit alebo vo vašom miestnom prostredí. Nový objekt obsahuje aktualizovanú hodnotu.
Poznámka: Upravil som kód tak, aby mohol bežať izolovane.