我想根据元素的子元素数动态设置元素的最大高度。
在组件中,我使用以下命令设置自定义属性:
document.documentElement.style.setProperty('--children-count', Children.count(props.children));
在我的css中,我这样使用它:
&.active {
.buttonGroup {
max-height: calc(var(--children-count) * 30px);
}
}
如果我只使用一次的话,这个方法很好用,但是,一旦我开始加载多个子组件的示例,--children-count就会被覆盖,所有前面的组件样式都会改变。
我该怎么办?
2条答案
按热度按时间rnmwe5a21#
这个问题很可能是因为您更改了顶部
documentElement
的--children-count
CSS变量的值,从而影响了文档中的所有组件。如果你想要每个组件1个值,那么简单地把它应用到所述组件的元素上,参见例如如何在动态组件中的动态CSS类上应用CSS变量
如果使用
styled-components
,还可以使用基于属性的样式调整(而不是CSS变量)。j9per5c42#
如果您需要在多个组件之间同步公共数据,* 将状态向上拉!* 在本例中,将状态向上拉到上下文中(除非您想使用props来管理它)。
下面是一个代码箱:https://codesandbox.io/s/nervous-lalande-wjpdgb
它的关键部分是处理共享状态的上下文提供程序
......以及上下文使用者,后者将向它写入内容。
效果将确保计数始终同步。