react-redux: What is the difference between state.setIn() and state.set()?

Immutable set method only sets immediate properties, I.e. direct children of the object. A setIn let's you set the value of any deep node down the data. set only takes property name. setIn takes an array of keys/index to reach down to the deeply nested element.

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");

The getIn/setIn methods are extremely useful when updating states in stores as you can use generic actions and supply the key paths to child components. They can invoke the actions passing the paths as parameters.


set and setIn are one of the immutablejs method which you use to set data in a list or map object. simple example to understand this is lets say you have a this

//note that fromJS is another method which comes from immutablejs library

const iniState = fromJS({
    name:null,
    friends:fromJS({
       name:null
    }),
})

in this case you need to update the initial state with the latest then that's where you can use set and setIn methods.

iniState.set('name',"sibusiso Massango").setIn(['friends','name'],"Zweli Mathebula");

this is how you can use the set and setIn method, to find more about this you can read this docs https://facebook.github.io/immutable-js/docs/