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.
- Så ska Microsoft få bukt med slöhet i Windows 1112
- Bahnhofs vd: Hyresgäster betalar orimligt mycket för bredband272
- Portabel AC inför sommaren [Samlingstråd]5,6k
- Vad har ni i lön?14k
- Vad gör du först på datorn vid ominstallation/ nyinstallation?108
- Ingen inspelningsfunktion längre på Telia Arris box?0
- Behöver ny fläkt till en Lenovo Legion 745
- Rykte: AMD siktar på prestandaklass med nästa generations Radeon55
- bra ide att byta från fiber till 5g nätverk?133
- C++ och dess framtid att programmera minnessäkert - Hur går utvecklingen?1,2k
- Köpes Köpes: Samsung Ultra (S22 - S24)
- Säljes Aopen Mini Pc (2 HDMI, 2 LAN)
- Säljes NVIDIA Quadro P620 V2 – 2 GB GDDR5
- Säljes EK D5 pump & EK Cpu block LGA 1700
- Säljes Stilren tyst mini itx dator - iphone 12 mini - SF600 -ev byte
- Bytes Rog Astral OC RTX 5090 bytes
- Köpes Corsair Commander Pro/Core, 16/12 fittings, vätskor etc
- Säljes Asus 3070 med garanti
- Köpes iPad mini 6/7 köpes
- Säljes Anderson Arc 2.4 Aircondition Luftkonditionering AC-enhet
- Så ska Microsoft få bukt med slöhet i Windows 1112
- Microsoft-bugg hotar tusentals organisationer5
- Överklockad Threadripper Pro 9995WX når 947 watt21
- Rykte: AMD siktar på prestandaklass med nästa generations Radeon55
- Snabbkoll: Hjälper du nära och kära med teknikköp?41
- Nya Intel-grafikkort närmar sig18
- Handskriven assembler snabbar upp kod23
- Ny emulator kör Steam och spel på RISC‑V-processorer26
- Kommentar: Forumet är dåtiden och framtiden23
- Elsparkcykel från F1-ingenjörer når 160 knyck70
Externa nyheter
Spelnyheter från FZ