Estaba teniendo un problema en el que seleccionar ciertos valores de mi tienda desencadenaría una nueva representación con cualquier actualización del valor de la tienda, incluso si estaba seleccionando valores que no se estaban actualizando. Resulta que el problema era que estaba haciendo esto:
const transformedValues = useSelector(state => state.some.array).map(value => value); Como señala la respuesta a la pregunta mencionada anteriormente, esto rompe la igualdad referencial de transformedValues , lo que hace que el componente se actualice.
Pero cuando hago esto, no hay ningún problema ni una repetición innecesaria:
const valuesFromStore = useSelector(state => state.some.array); const transformedValues = valuesFromStore.map(value => value);¿Por qué? ¿Cuál es la diferencia entre estas dos tácticas que en la primera se rompe la igualdad referencial del selector (provocando rerender), y en la segunda no provoca rerender? ¿Qué está pasando "bajo el capó" de redux y javascript para marcar la diferencia aquí?