I have an issue where re-rendering of state causes ui issues and was suggested to only update specific value inside my reducer to reduce amount of re-rendering on a page.
this is example of my state
{ name: "some name", subtitle: "some subtitle", contents: [ {title: "some title", text: "some text"}, {title: "some other title", text: "some other text"} ] }
and I am currently updating it like this
case 'SOME_ACTION': return { ...state, contents: action.payload }
where action.payload
is a whole array containing new values. But now I actually just need to update text of second item in contents array, and something like this doesn’t work
case 'SOME_ACTION': return { ...state, contents[1].text: action.payload }
where action.payload
is now a text I need for update.
Advertisement
Answer
You could use the React Immutability helpers
import update from 'react-addons-update'; // ... case 'SOME_ACTION': return update(state, { contents: { 1: { text: {$set: action.payload} } } });
Although I would imagine you’d probably be doing something more like this?
case 'SOME_ACTION': return update(state, { contents: { [action.id]: { text: {$set: action.payload} } } });