Do I have to care?

You can stop reading here if you are not dealing with frequent updates of arrays where actually only some items change at a time. Some real life examples of updating only a some items are based on:

User input affecting the array (e.g. toggling a “star” button) Periodic / frequent polling (e.g. stock data dashboard) Push updates (e.g. scoreboard)

The smaller the ratio changedItems.length/array.length the more benefit you can get from using React.PureComponent .

What’s the problem?

When writing “modern” (as of 2017) Javascript with React many people use functional approaches to state management, like redux.

…all elements are considered for reconciliation…

Reducers should treat the input state as immutable and should return a new array when one or more items must be changed due to some action being dispatched:

const users = (state, action) => {

if (action.type === 'CHANGE_USER_1') {

return [action.payload, ...state.slice(1)]

}

return state

}

Let’s assume that all users in the array are rendered by this component:

import User from './User' const Users = ({users}) =>

<div>

{

users.map(user => <User {...user} />

}

</div>

The point here is: Whenever users prop changes, all elements are considered for reconciliation. Even if only one element actually needs to be updated.