Как правило, с вашей реализацией проблем нет, так как isScrollingDown
просто реагирует на изменения значения row
props.
Однако я чувствую, что нет необходимости использовать производное состояние в вашем сценарии, так как logi c довольно прост.
Будет гораздо более интуитивно понятным избавиться от необходимости поддерживать состояние компонента и удалить любые другие источники ненужного повторного рендеринга.
function ScrollView({ row }) {
return `Scrolling down: ${row}`;
}
Изменить: учитывая, что на самом деле существует необходимость во внутреннем состоянии, я бы предложил некоторые другие оптимизации, которые заключались бы в выполнении проверки в хуке useEffect
, так что вы только обновляете состояние, когда значения props и state различаются:
useEffect(() => {
if (props.row === isScrollingDown {
return;
}
setIsScrollingDown(props.row);
}, [props.row]);