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.
- Inet - Vilken kyl pasta använder de när de bygger? 😀10
- Proshop dator DUTZO Gaming Blaze6
- Windows 11 installation går inte, hjälp.14
- Kommentar: SweClockers storhet syns när Amazon sumpar rea103
- Nvidia Smooth Motion på väg till RTX 4000-serien4
- Vad är datorn värd?2
- Snapdragon X Elite/Plus, är den funkis?10
- Hur började ditt datorintresse?88
- Tråden om PlayStation 5 | Slim | PRO20k
- Allt om Cyberpunk 2077 – nästa storspel från CD Projekt Red2,4k
- Säljes Pny Nvidia GeForce RTX 3080
- Köpes LGA1700 Vattenblock
- Säljes HP EliteBook 830 G7
- Skänkes Skänkes: Ender 3 v2 plus tillbehör
- Säljes Uppgraderings paket!? CPU - Moderkort - m.2 NVMe SSD - RAM
- Köpes DDR4 32Gb (2x16)
- Säljes Microsoft Surface Laptop 3 - i7, 16 RAM, 256 HD
- Säljes Sound Blaster ZxR
- Köpes Söker gamla grafikkort
- Säljes Gigabyte rtx 3070ti gaming oc
- Nvidia Smooth Motion på väg till RTX 4000-serien4
- Nytt och nischat från mässgolvet i Shanghai4
- Asus visar RTX 5090-grafikkort klätt i rent guld39
- Priserna på minnesmoduler skjuter i höjden16
- G.Skill lanserar uppsättning med nya minnesmoduler30
- Samsung svarar på oförändrat batteri i Galaxy Z Fold 721
- Nothing Phone 3 – rolig och snygg31
- Det är dags att säga farväl till Windows blåskärm20
- Teamgroup lanserar SSD med inbyggd datadestruktion45
- Razer avtäcker spelmusen Deathadder V4 Pro64
Externa nyheter
Spelnyheter från FZ
- Bioshock-skaparens Judas krånglar inte till det: "Du köper spelet och får allt på en gång" idag
- Deep Rock Galactic: Survivor gräver sig ut från Early Access den 17:e september igår
- Resident Evil Survival Unit - Favoritkaraktärerna från serien återförenas igår
- Warhammer 40K: Dawn of War Definitive Edition släpps den 14:e augusti igår
- Rainbow Six: Siege X får besök från Borderlands 12/07