Я пытаюсь установить тип элемента, переданного в качестве параметра, с помощью React.ComponentType
.
import * as React from "react"
type BaseType = {
element: React.ComponentType
}
const Base = ({element: Element}: BaseType) => (
<Element />
)
const renderBase = (
Component: React.ComponentType
) => <Base element = {Component} />
const Hello = () => renderBase(<h1>Hello</h1>)
Ошибка: Argument of type 'Element' is not assignable to parameter of type 'ComponentType<{}>'.
@kellys Я пробовал, но ошибка меняется на JSX element type 'Element' does not have any construct or call signatures.
Если вы хотите передать элемент JSX в качестве реквизита, вы можете использовать тип JSX.Element
, но вам также придется изменить Base
, поскольку <Element/>
предполагает, что Element
является компонентом, а не элементом. Это работает, если вы просто возвращаете сам элемент:
type BaseType = {
element: JSX.Element
}
const Base = ({ element }: BaseType ) => element
const renderBase = (element: JSX.Element) =>
<Base element = {element} />
const Hello = () =>
renderBase(<h1>Hello</h1>)
(Я также переименовал Element
в element
, чтобы подчеркнуть, что это не компонент.)
Я считаю, что это
React.ReactNode
вместоJSX.Element
илиReact.ComponentType