React · Middle · Запитання 40 з 75
Чому цей селектор спричиняє перемальовування за будь-якої дії в store?
const done = useSelector(state =>
state.todos.filter(t => t.done)
);- ✓Правильна відповідь:
filterщоразу повертає новий масив - 2
useSelectorзавжди перемальовує за будь-якої дії - 3
filterнадто повільний для виклику всередині селектора
Пояснення
useSelector запускається після кожного dispatch і порівнює результат за посиланням. Новий масив ніколи не дорівнює попередньому. Рішення - мемоізований селектор createSelector, який поверне той самий масив, доки state.todos не змінився.