我每30秒取一次,并将响应保存在我的redux状态。我想做的是防止组件的重新渲染,如果响应是相同的前一个。为了做到这一点,我尝试了使用ememo钩子。
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的方式是错误的吗?
我建议你使用reselect来记忆选择器,所以如果没有变化,它不会呈现
这是重选的链接:https://github.com/reduxjs/reselect