我每30秒执行一次抓取,并将响应保存到我的redux状态。我想要做的是,如果响应与前一个响应相同,则阻止重新呈现组件。为了做到这一点,我尝试了useMemo钩子。
const details = useSelector((state: RootState) => state.orders.details);这是我每30秒更新一次的状态。(它是一个对象)
这就是我实现useMemo的方式
const memorizedDetails = useMemo(() => {
return details;
}, [details]);最后是我的useEffect
useEffect(() => {
if (memorizedOrderDetails) {
console.log("content changed");
}
}, [memorizedOrderDetails]);但是,即使更新的详细信息与前一个相同,它也总是每30秒记录一次“内容更改”。
我在这里使用useMemo的方式是错误的吗?
发布于 2021-09-16 13:47:12
我建议你使用reselect来记忆选择器,所以如果没有变化,它就不会被渲染
下面是reselect的链接:https://github.com/reduxjs/reselect
https://stackoverflow.com/questions/69209486
复制相似问题