我正在try 创建一个被包装的元素,这样我就可以用一个通过传递props 提供的Reaction上下文提供程序来包装一些东西.
编辑:从你可以看到我的try 在这里:https://stackblitz.com/edit/stackblitz-starters-lxdb6l?file=src%2FApp.tsx
我之所以把它作为一个包装组件来做,是因为将要传递的"父"组件的数量将是一个组件数组(即:一堆React上下文提供程序),所以我不能直接硬编码.
const WrappedComponent: React.JSX.ElementType = (OutterComponent: React.JSX.ElementType, InnerComponent: React.JSX.ElementType) => {
return <OutterComponent>{InnerComponent}</OutterComponent>
}
如果我更改为React.JSX.ElementType
,打字错误就会消失:
const WrappedComponent: React.JSX.ElementType = (OutterComponent: React.JSX.ElementType, InnerComponent: React.JSX.ElementType) => {
return <OutterComponent>{InnerComponent}</OutterComponent>
}
但是,我仍然不能使用该组件:
return <WrappedComponent
OutterComponent={<Tooltip title={'just testing purposes'} >{'blah'}</Tooltip>}
InnerComponent={<Button>Button text</Button>}
/>
提供了一大堆错误:
Element type is invalid: expected a string (for build-in components) or a class/function (for composite components) but got : object
最后,我想做的是能够 Select 性地传递一个上下文到这个组件并包装"innerability".我们的目标是创建一个通用库,它将接收上下文作为prop,并使用提供程序包装自己,以便库中的所有子元素(也作为prop传递)都能够利用上下文.