恕我直言,来自React Hooks FAQ #getDerivedStateFromProps的建议
导致第一次渲染的值与 的值row
不对应isScrollingDown
。由于调用setIsScrollingDown
只安排新的渲染并且不影响当前渲染,后者将使用新值row
和旧值执行isScrollingDown
。
此行为不等同于getderivedstatefromprops
允许row
和之间的连贯性的组件类的静态方法isScrollingDown
。
为了保证连贯的渲染,不应该使用以下代码更新示例吗?还是我错过了什么?
谢谢 !
function ScrollView({row}) {
let [isScrollingDown, setIsScrollingDown] = useState(false);
let [prevRow, setPrevRow] = useState(null);
if (row !== prevRow) {
// Row changed since last render. Update isScrollingDown.
isScrollingDown = prevRow !== null && row > prevRow
setIsScrollingDown(isScrollingDown);
setPrevRow(row);
}
return `Scrolling down: ${isScrollingDown}`;
}