У меня есть простое приложение (просмотр на stackblitz ), использующее useSelector
const TodoList = () => {
const [count, setCount ] = useState(0);
const todos = useSelector(state => {
console.log('useSelector called')
return state.todos
});
useEffect(() => {
const timer = setInterval(() => {
setCount(count++)
}, 1000);
return () => clearTimeout(timer);
}, []);
return <p>{count}</p>
}
export default TodoList
Существует таймер, обновляющий переменную count
и отображающий ее в виде , Что я не понимаю, так это то, что функция выбора useSelector
вызывается каждый раз, когда F C перерисовывается.
Согласно документам ( или моя интерпретация) это не должно происходить
Селектор будет запускаться всякий раз, когда компонент функции рендерится (если только его ссылка не изменилась со времени предыдущего рендеринга компонента, так что кэшированный результат может быть возвращается на крючок без повторного запуска селектора).
Вопросы
1) как предотвратить повторный запуск селектора?
2) Если моя интерпретация документов неверна, на какую ситуацию ссылаются документы?