我正在嘗試將型別設定為使用作為引數傳遞的元素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<{}>'.
游樂場示例
uj5u.com熱心網友回復:
如果您希望將 JSX 元素作為道具傳遞,您可以使用 type 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,以強調它不是一個組件。)
TypeScript 游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/445926.html
上一篇:使用onInputintypescript/React觸發函式
下一篇:回圈遍歷陣列物件
