我有這個組件:
interface TestI = {
id: string;
}
const Test = ({children, id}: React.PropsWithChildren<TestI>) => {
return <div id={id}>{children}</div>
}
組件的使用:
<Test id={'hi'}></Test>
我希望從 TS 收到我沒有children用于Test組件的警告。
問題:如何讓孩子被要求?
uj5u.com熱心網友回復:
如何讓孩子成為必需品?
由于沒有任何內置型別具有childrenas required prop(FC并且PropsWithChildren具有childrenas optional),因此您必須自己添加它。
interface TestI {
id: string;
children: React.ReactNode;
}
const Test = ({ children, id }: TestI) => {
return <div id={id}>{children}</div>
}
<Test id="test"></Test> // Property 'children' is missing error
uj5u.com熱心網友回復:
您應該明確宣告您的組件需要children:
const TestComponent = (props: {children: React.ReactNode, id: string}) => {
return (
<div id={props.id}>{props.children}</div>
);
}
請參閱TS 游樂場中的此示例。
此外,型別children是可選的React.PropsWithChildren- 這就是沒有錯誤的原因(指向型別的鏈接)。而且我無論如何也不會使用這個泛型,因為它只會將childrenprop 添加到傳遞的型別中,并且社區不鼓勵使用這種泛型。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/522084.html
標籤:反应打字稿
