【问题标题】:prevent re-render using useMemo防止使用 useMemo 重新渲染
【发布时间】:2021-09-16 21:47:12
【问题描述】:

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

【问题讨论】:

    标签: reactjs react-native react-usememo


    【解决方案1】:

    我建议你使用 reselect 来记忆选择器,所以如果没有改变它就不会渲染

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多