By default, when you add an element to the array that the `each` block iterates over, it will add an item at the *end* of the block instead of at the same position as the element's index. This means that if you add an element to the array anywhere other than at the end, this leads to each item corresponding to a different element of the array than the one it was first created for. The same goes for removing an element. That might not be what you want.
By default, when you add an element to the array that the `each` block iterates over, it will add an item at the *end* of the block instead of at the same position as the element's index, and update the attributes of the existing items. This means that if you add an element to the array anywhere other than at the end, this leads to each item corresponding to a different element of the array than the one it was first created for. The same goes for removing an element from the array. That might not be what you want.
It's easier to understand with an example. For each element of the array, <code>#each</code> creates one `<Thing>` component which you can see as rows. The initial value shows to which element of the array the component instance corresponded when it was created, while the current value shows which element of the current array it corresponds to now. The expected behavior would be that both values match.
It's easier to understand with an example. For each element of the array, <code>#each</code> creates one `<Thing>` component which you can see as rows. The initial value corresponds to the element of the original array for which the component was created, while the current value shows the element of the current array it corresponds to now. The expected behavior would be that both values match.
Click the 'Remove first element' button a few times, and notice that it's removing `<Thing>` components from the end, and updating the prop for those that remain. Instead, we'd like to remove the first `<Thing>` component and leave the rest unaffected.