【发布时间】:2020-06-28 03:58:27
【问题描述】:
想象一个Container 组件使用指定的height 渲染div,例如:
<Container height="80">
Hello World
</Container>
和MyHeader 组件,它使用特定的height 呈现Container,例如:
function MyHeader() {
return (
<Container height="100">
Header content goes here
</Container>
);
}
现在,我想实现一个如下所示的Fixed 组件:
<Fixed>
<Fixed.Item>
<MyHeader />
</Fixed.Item>
<Fixed.Content>
Some content goes here
</Fixed.Content>
</Fixed>
在渲染 Fixed.Content 时,我想自动将其偏移设置为 100px(因为 MyHeader 是 100px 高)。
有没有办法让Fixed 组件获取MyHeader 的height,以便将其传递给Fixed.Content?
有没有更好的自动化方法?
注意:使用useEffect(或componentDidMount)不是一个选项,因为我希望它在服务器渲染环境中工作。
【问题讨论】:
-
你能把高度作为道具传递给
Fixed中的MyHeader吗? -
并非如此。只有
MyHeader知道它实际呈现的内容及其height。我们可以在这里假设的是,它总是渲染一个带有height属性集的Container。 -
也许尝试使用
ref和MyHeader然后你可以使用clientHeight属性从那里抵消你的Fixed.Content -
是否有任何理由需要使用偏移量将内容放置在标题下方?只是将它们堆叠在一个块中或弹性显示中是一种选择吗?
-
我希望标题是固定的/粘性的。