gpt4 book ai didi

reactjs - 当父组件在其子组件中注入(inject) props 时,如何在 Typescript 中定义 props?

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:28 25 4
gpt4 key购买 nike

当一个组件克隆它的子组件来为它们注入(inject) props 时,如何定义子组件的 props 类型?

我收到一个错误,因为 injectedProps 应该在 Child

const Parent: React.SFC<ParentProps> = ({ children }) => (
<div>
{React.cloneElement(children[0], { injectedProp: 'foo' })}
</div>
);

const Child: React.SFC<ChildProps> = ({ injectedProp }) => (
<div attr={injectedProp} />
);

type ChildProps = {
injectedProp: string;
};

<Parent>
<Child />
</Parent>

Error in Child: injectedProp is missing

最佳答案

此代码模式无法在 TypeScript 中正确输入,如果你问我的话,它很丑陋。相反,考虑传递一个函数,该函数接受注入(inject)的 prop 并创建最终的 child :

interface ParentProps {
children: (childProps: ChildProps) => React.ReactNode;
}

const Parent: React.SFC<ParentProps> = ({ children }) => (
<div>
{children({ injectedProp: 'foo' })}
</div>
);

const Child: React.SFC<ChildProps> = ({ injectedProp }) => (
<div title={injectedProp} />
);

type ChildProps = {
injectedProp: string;
};

function foo() {
return <Parent>
{childProps => <Child {...childProps} />}
</Parent>
}

关于reactjs - 当父组件在其子组件中注入(inject) props 时,如何在 Typescript 中定义 props?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52422854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com