reactjs - React + Typescript: Type af React-komponent uden tilstand/props
Jeg har set flere eksempler på React-komponenter, der bruger TypeScript:
class Foo extends React.Component<IProps, IState> {}Det ser ud til, at der ikke er en klar konvention, når vi ikke bruger hverken Props eller State.
Folk sætter disse typer som any, null, undefined, {}, , osv. Dette er, hvad jeg har set indtil videre:void
class Foo extends React.Component<null, null> {}class Foo extends React.Component<any, any> {}class Foo extends React.Component<{}, {}> {}class Foo extends React.Component<undefined, undefined> {}class Foo extends React.Component<void, void> {}class Foo extends React.Component<object, object> {}
Hvad er den bedste måde at gøre det på?
Opdatering:
Rekvisitter:
voidkan ikke bruges (https://github.com/Microsoft/TypeScript/issues/15409 og https://github.com/Microsoft/TypeScript/issues/15419), da props-objektet initialiseres til{}
LØSNING
Gør blot - class Foo extends React.Component {}, da prop og state initialiseres til {}
Svar #1
Som besvaret på dette spørgsmål, kan du bruge React.FC<{}> klassen
const MyStatelessComponent : React.FC<{}> = props =>
<div>{props.children}</div>
Eller hvis dit påslag bliver større:
const MyStatelessComponent : React.FC<{}> = props => {
{/* Some code here */}
return <div>{props.children}</div>
}
Svar #2
Fra https://github.com/DefinitelyTyped/DefinitelyTyped/blob/15b7bac31972fbc081028937dfb1487507ca5fc9/types/react/index.d.ts#L199-L200
interface Component<P = {}, S = {}> extends ComponentLifecycle<P, S> { }
Props og state initialiseres til {}, så for en komponent uden hverken state eller props kan vi simpelthen gøre:
class Foo extends React.Component {}
Svar #3
Ifølge denne vejledning og min erfaring, vil jeg sige:
class Foo extends React.Component<null, null> {}, når du ved, at du ikke vil modtage props eller stateclass Foo extends React.Component<any, any> {}når du ved, at du vil modtage props og state, men du egentlig ikke bryder dig om, hvordan de ser udclass Foo extends React.Component<{}, {}> {}har jeg aldrig set, virker mærkeligtclass Foo extends React.Component<undefined, undefined> {}det samme somnull, det er op til dig. Jeg ser ofterenullendundefinedclass Foo extends React.Component<void, void> {}dårlig idé, da det ser ud til at være reserveret til funktioners returværdi (når du ikke forventer nogen)
Andre meninger er velkomne
