4 ms·
Gotcha - so you see it mostly as just a perf optimization based around SCU? Funny timing. I was actually implementing SCU using deep obj equality for the first
by johnfn 10y ago
Gotcha - so you see it mostly as just a perf optimization based around SCU?
Funny timing. I was actually implementing SCU using deep obj equality for the first time earlier today. I did understand the desire for immutability, but it didn't seem to be a game changer.
- acemarke 10y agoPerf optimization is a big benefit, yes, but it also fits with functional programming principles in general. React's `setState()` definitely doesn't care if you mutate or not - you can `.push()` right into an existing array in state, and re-set it into state to queue the re-render. On the Redux side of things, immutability is important for several reasons. First, pure reducer functions are more easily testable. Second, they enable time-travel debugging - without immutability, jumping back and forth in state would cause the state contents to behave unpredictably, breaking time-travel. Third, the React-Redux `connect` function relies on immutability checks against the root of the state tree to see if it _thinks_ anything has changed, and against the return values of your `mapState` functions as well. If you mutate Redux state, your connected components usually won't re-render properly, because they think nothing has changed.
- dntrkv 10y agoJust an fyi, if you are just doing a shallow comparison you can use React.PureComponent which will implement a shallow comparison sCU for you.