[英]Pass prop from intermediate component into props.children
我想制作一个功能组件,为它的直接子组件提供一个道具。 我不想使用上下文,因为我希望它只对直接的孩子可用。
所以给出以下组件:
const TopLevel = () => {
return (
<FooGiver>
<LowerLevel />
</FooGiver>
)
}
interface LowerLevelProps {
foo?: string;
}
const LowerLevel = ({foo}: LowerLevelProps) => {
return foo ? <p>{foo}</p> : <p>No foo provided</p>
}
const FooGiver = ({ children }: FooGiverProps) => {
const foo = bar // TODO: This should set its children's `foo` prop to "bar"
return (
<>
{ children }
</>
)
}
是否可以定义FooGiver
以便它可以给任何它收到"bar"
的foo
道具的孩子?
如果是这样,我是否需要继续保持foo
道具可选,或者 TS 会选择FooGiver
将始终设置foo
,而不是抱怨我调用<LowerLevel />
而不提供所需的foo
道具?
我认为这样做可以为所有孩子添加道具
以下示例组件将一个名为newProp
且值为true
的新道具添加到它采用的所有子组件。
function Parent({children}){
return <>
{children.map(child=>{
const modified = child;
modified.props["newProp"] = true;//add new value to prop
return modified
})}
</>
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.