Abstractions all the way down.
ReactJS) Vad är syftet med använda getDerivedStateFromProps Life Cycle API?
@ProgrammeringElev: getDerivedStateFromProps()
anropas när antingen properties från föräldern eller komponentens eget state uppdaterats, och låter dig returnera ett nytt state för underkomponenten baserat på de två värdena. Här är ett mer konkret exempel där föräldrakomponenten styr huruvida texten i ett inputfält ska vara uppercase eller inte, utan getDerivedStateFromProps()
i Child.tsx så skulle inte texten ändra case när inställningen ändras i föräldern:
interface IParentProps {
}
interface IParentState {
uppercase: boolean;
}
export class Parent extends React.Component<IParentProps, IParentState> {
public constructor(props: IParentProps) {
super(props);
this.state = {
uppercase: false,
};
}
private onClickHandler(): void {
this.setState({
uppercase: !this.state.uppercase,
});
}
public render(): React.ReactNode {
return (
<div>
<Child
uppercase={this.state.uppercase}
/>
<label>
<input
type="checkbox"
onClick={() => this.onClickHandler()}
/>
<span>Uppercase</span>
</label>
</div>
);
}
}
interface IChildProps {
uppercase: boolean;
}
interface IChildState {
text: string;
}
export class Child extends React.Component<IChildProps, IChildState> {
public constructor(props: IChildProps) {
super(props);
this.state = {
text: "bäver",
};
}
public static getDerivedStateFromProps(
props: IChildProps,
state: IChildState,
): IChildState | null {
return {
text: props.uppercase ?
state.text.toUpperCase() :
state.text.toLowerCase(),
};
}
private onChangeHandler(e: React.FormEvent<HTMLInputElement>): void {
this.setState({
text: e.currentTarget.value,
});
}
public render(): React.ReactNode {
return (
<input
value={this.state.text}
onChange={(e) => this.onChangeHandler(e)}
/>
);
}
}
Mer information:
https://reactjs.org/blog/2018/06/07/you-probably-dont-need-de...
(Exemplet är skrivet i TypeScript, ett statiskt typat superset av JavaScript som fungerar väldigt väl tillsammans med React. Rekommenderar starkt att arbeta med det istället för JavaScript.)
@ProgrammeringElev: getDerivedStateFromProps()
anropas när antingen properties från föräldern eller komponentens eget state uppdaterats, och låter dig returnera ett nytt state för underkomponenten baserat på de två värdena. Här är ett mer konkret exempel där föräldrakomponenten styr huruvida texten i ett inputfält ska vara uppercase eller inte, utan getDerivedStateFromProps()
i Child.tsx så skulle inte texten ändra case när inställningen ändras i föräldern:
interface IParentProps {
}
interface IParentState {
uppercase: boolean;
}
export class Parent extends React.Component<IParentProps, IParentState> {
public constructor(props: IParentProps) {
super(props);
this.state = {
uppercase: false,
};
}
private onClickHandler(): void {
this.setState({
uppercase: !this.state.uppercase,
});
}
public render(): JSX.Element {
return (
<div>
<Child
uppercase={this.state.uppercase}
/>
<label>
<input
type="checkbox"
onClick={() => this.onClickHandler()}
/>
<span>Uppercase</span>
</label>
</div>
);
}
}
interface IChildProps {
uppercase: boolean;
}
interface IChildState {
text: string;
}
export class Child extends React.Component<IChildProps, IChildState> {
public constructor(props: IChildProps) {
super(props);
this.state = {
text: "bäver",
};
}
public static getDerivedStateFromProps(
props: IChildProps,
state: IChildState,
): IChildState | null {
return {
text: props.uppercase ?
state.text.toUpperCase() :
state.text.toLowerCase(),
};
}
private onChangeHandler(e: React.FormEvent<HTMLInputElement>) {
this.setState({
text: e.currentTarget.value,
});
}
public render(): JSX.Element {
return (
<input
value={this.state.text}
onChange={(e) => this.onChangeHandler(e)}
/>
);
}
}
Mer information:
https://reactjs.org/blog/2018/06/07/you-probably-dont-need-de...
(Exemplet är skrivet i TypeScript, ett statiskt typat superset av JavaScript som fungerar väldigt väl tillsammans med React. Rekommenderar starkt att arbeta med det istället för JavaScript.)
Hej Jag har läst din kod och jag förstår inte riktigt.
Kan man använda interface och generic i javascript ?!?! Jag har aldrig sett sådan kod i stackoverflow/ google
Hej Jag har läst din kod och jag förstår inte riktigt.
Kan man använda interface och generic i javascript ?!?! Jag har aldrig sett sådan kod i stackoverflow/ google
Det är TypeScript, se länken i mitt förra inlägg. Det påverkar inte hur getDerivedStateFromProps()
fungerar eftersom att det är en del av React, men det är lättare att läsa och förstå vad som händer tack vare typdeklarationerna. Här är ett körbart exempel:
https://codepen.io/anon/pen/vagzzx
Abstractions all the way down.
- Windows 11 fyller snart fyra år och TPM-krav kvarstår3
- Hur investerar ni?12k
- EU-länder testar app för åldersverifiering på nätet80
- Rykte: King ersätter utvecklare med AI62
- När vet man när man ska byta sina musfötter?8
- Litet UPS system hemma med lifepo4 batterier samt inverter, vad tror ni om detta?28
- Meta Quest 3886
- Path of Exile kraschade, därefter har inställningar i flera program ändrats eller nollställts. Vad kan ha hänt?1
- Dator för spelutveckling och moddat minecraft3
- Posta din hastighet!2,5k
- Köpes Söker rtx 5070ti alternativt rtx 4080 antingen köpes eller bytes
- Säljes Nvidia 3080ti Founders edition
- Säljes Dell 27" Alienware AW2724DM IPS 1440P 165 Hz med HDMI 2.1
- Säljes SSD & HDD, 3x Samsung 860 EVO mSATA, 2x HP 1TB 7200rpm SATA
- Säljes Semesterstädning
- Skänkes 32" tv skänkes Sharp med fäste som går att vrida osv
- Köpes 1000-1200W 3.1 ATX PSU
- Säljes Logitech g920 och Playseat challenge
- Säljes Doom: The Dark Ages
- Skänkes Mikrofon Nikabe M-5 Pro + mikrofonarm Nikabe H1
- Windows 11 fyller snart fyra år och TPM-krav kvarstår3
- Rykte: King ersätter utvecklare med AI62
- Snabbtest: Nvidia Smooth Motion med Geforce RTX 40905
- EU-länder testar app för åldersverifiering på nätet80
- ShowCase: Doom: The Dark Ages på MSI-bygge med 5070 Ti8
- Begagnade Switch-spel kan ge onlineförbud69
- Intel varslar tusentals ingenjörer och tekniker21
- Commodore 64 Ultimate släpps i höst29
- Google ska slå samman Chrome OS och Android29
- Snabbkoll: Har du betalat för Winrar?70
Externa nyheter
Spelnyheter från FZ