【发布时间】:2020-01-25 20:52:16
【问题描述】:
useMemo 可以在 渲染期间设置状态时 用于避免额外的引用相等检查代码/变量吗?
示例:useMemo 与 setState 在渲染期间取自此 rare documented use case:
function ScrollView({row}) {
let [isScrolling, setIsScrolling] = useState(false);
const lessCodeThanCheckingPrevRow = useMemo(
() => {
// Row changed since last render. Update isScrolling.
setIsScrolling(true); // let's assume the simplest case where prevState isn't needed here
},
[row]
);
return `Scrolling down: ${isScrolling}`;
}
Above 大大减少了代码和额外的变量,仅用于相等性检查,那么为什么文档暗示应该手动完成引用相等性检查?
【问题讨论】:
-
非常好的问题。由于这也将在渲染期间直接调用
setIsScrolling,因此应该具有相同的效果。
标签: reactjs render react-hooks memoization