【问题标题】:How can I use Zustand and ResizeObserver我如何使用 Zustand 和 ResizeObserver
【发布时间】:2023-01-25 04:03:54
【问题描述】:

我创建了这个钩子。但由于某种原因,它不起作用。 isDesktop 在 1280px 下返回 false 但 <profilelayout> 不会消失。它应该只显示<Form /> 组件。谁能帮我我想不通

export const useDeviceType = create(set => {
  let isDesktop = false;
  let isPhone = false;

 const resizeObserver = new ResizeObserver(entries => {
    for (const entry of entries) {
      const { clientWidth } = entry.target;
      if (clientWidth > 1280) {
        isPhone = false;
        isDesktop = true;
      } else {
        isDesktop = true;
        isPhone = false;
      }
      set({ isDesktop, isPhone });
    }
  });

if (typeof document !== 'undefined') {
    resizeObserver.observe(document.body);
}
  return { isDesktop, isPhone };
});

const EditEmail = () => {

    const isDesktop = useDeviceType();
  return (
    <>
      {isDesktop ? 
        <ProfileLayout>
           <Form />
        </ProfileLayout> :
          <Form /> 
      }
    </>
  );

【问题讨论】:

  • 你能发布create的定义吗?同时发布 &lt;ProfileLayout&gt; 组件的定义。

标签: reactjs next.js zustand


【解决方案1】:

因为您的 ifelse 块是相同的:

if (clientWidth > 1280) {
  isPhone = false;
  isDesktop = true;
} else {
  isDesktop = true;
  isPhone = false;
}

【讨论】:

    猜你喜欢
    • 2022-07-08
    • 1970-01-01
    • 2021-10-11
    • 2022-11-06
    • 1970-01-01
    • 2023-02-07
    • 2021-05-12
    • 2022-06-19
    • 2023-01-28
    相关资源
    最近更新 更多