我正在尝试在 body 标记上有条件地设置一个类。就其本身而言,这是微不足道的,不是问题,但是当有多个组件时,有条件地同时写入 body 标记的类属性,它们开始相互覆盖。只有其中之一保持活跃,而其他的则被忽略。示例:
//Sidebar.js
const Sidebar = () => (
// ...
<Helmet>
<body className={menuOpen ? 'blur' : ''} />
</Helmet>
// ...
);
//Loader.js
const Loader = () => (
// ...
<Helmet>
<body className={isLoading ? 'hidden' : ''} />
</Helmet>
// ...
);
在此示例中,侧边栏必须在事件时通过在 body 标记上设置一个类来禁用滚动(并出于设计目的模糊页面)。加载器需要在事件时禁用滚动(它是全屏预加载器)。这里侧边栏组件优先,Loader 组件中的 Helmet 标签被忽略。
我怎样才能做到这一点?
编辑:当然,我可以只使用 DOM API 并手动设置/删除类,这就是我目前正在做的事情,但想知道是否有更多的 react 方式来做到这一点。
最佳答案
在 class
属性中维护所需项目的数组,然后使用 helmet
应用该数组
关于javascript - React Helmet 动态类相互覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59119715/