我正在尝试使用以下样式的子组件创建一个React组件:https://react-bootstrap.github.io/components/cards/,它应该在左侧呈现一个组件,在右侧呈现一个组件
<MyComponent>
<MyComponent.Left>
foo
</MyComponent.Left>
<MyComponent.Right>
bar
</MyComponent.Right>
</MyComponent>
我的基本策略是创造这样的东西:
function MyComponent(props:PropsWithChildren):JSX.Element{
var leftComponent = ???;
var rightComponent = ???;
return
(<div>
<div className="this-goes-on-the-right">leftComponent</div>
<div className="this-goes-on-the-left">rightComponent</div>
</div>);
}
function MyComponent.Left = function MyComponentLeft(props:PropsWithChildren){
return (<div>props.children</div>);
}
function MyComponent.Right = function MyComponentRight(props:PropsWithChildren){
return (<div>props.children</div>);
}
但是我不知道如何判断传递给MyComponent的子元素中哪个是MyComponent.Left,哪个是MyComponent.Right,我该如何在 typescript 中做到这一点呢?
2条答案
按热度按时间zlhcx6iw1#
他们正在使用
Object.assign
来分配“子组件”。来源
wz8daaqr2#
1.可能有多种方法可以达到你的目标,最基本的方法是给组件设置一些名称,并检查每个子组件的名称(react docs),但我不推荐这样做。
1.相反,您应该正确地设置
MyComponent.Left
和MyComponent.Right
的样式,以便无论它们传递给MyComponent
的子级的顺序如何,都能以所需的方式显示它们。大致说明我的意思:
样式化嵌套组件的类的实现可以基于flex-box规则,或者浮动或者适合您的用例的任何规则。
1.还有一个选项与示例稍有不同,但可能有用,那就是将组件作为 prop 传递,而不是像下面这样的子对象: