0

我每 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 的方式错了吗?

4

1 回答 1

1

我建议您使用 reselect 来记忆选择器,因此如果没有更改,它将不会呈现

这是重新选择的链接:https ://github.com/reduxjs/reselect

于 2021-09-16T13:47:12.453 回答