The key to being productive with immutable JS was understanding how to update values, is nested. Using the setIn
can place a new value directly to an existing or new path. If you need access to the previous value before setting the new one, you can use updateIn
instead. updateIn
accepts the same pat H lookups setIn
as, but gives you a callback function instead so it can use the previous value however you wish and Return an updated version.
Const{Map, List, FROMJS} =immutable;ConstState =Fromjs ({home: {loading:false, messages: [{type:'Info', message:'Welcome to our website' } ] }});//ADD a new message with UpdateinConstUpdated = State.updatein (['Home','Messages'], msgs = { returnMsgs.push (Map ({type:'Info', Message:'Hi there!'}));}); Console.log (Updated.getin (['Home','Messages']). TOJS ());//Update A message in a known pathConstUpdated2 = State.setin (['Home','Messages',0,'message'],'New message!'); Console.log (Updated2.getin (['Home','Messages']). TOJS ());
[Immutable.js] Updating nested values with Immutablejs