簡體   English   中英

道具傳播與 typescript 反應

[英]Props spread in react with typescript

我有一些這樣的代碼:

type WrapperProps = { wrapperProp: string };

const Wrapper: React.FC<WrapperProps> = ({ children }) => <div>{children}</div>;

type MyCmpnntProps = { myCmpnntProp: string };

const MyCmpnnt: React.FC<MyCmpnntProps> = (props) => (
  <Wrapper {...props}>MyCmpnnt in a Wrapper</Wrapper>
);

如果我做這個改變它工作正常

type MyCmpnntProps = WrapperProps & { myCmpnntProp: string };

我想知道是否有辦法不進行類型聯合。 在我看來,React.FC 應該自己做這件事,還是我錯了?

TL;DR:你錯了,類型系統根本不是這樣工作的。

當你告訴編譯器時:我有一個方法接受類型為 MyCmpnntProps 的變量,它期望你說你會給出什么,不多也不少。 如果你還想傳遞包裝器的道具,你需要通過為 MyCmpnntProps 類型或在組件定義中創建聯合來告訴編譯器,如下所示:

type WrapperProps = { wrapperProp: string };

const Wrapper: React.FC<WrapperProps> = ({ children }) => <div>{children} 
</div>;

type MyCmpnntProps = { myCmpnntProp: string };

// Merge the types in the component definition
const MyCmpnnt: React.FC<MyCmpnntProps & WrapperProps> = (props) => (
  <Wrapper {...props}>MyCmpnnt in a Wrapper</Wrapper>
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM