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.
- RTX 5080/5090 lagerstatus1,6k
- Nya Ikea-högtalare får Bluetooth och Spotify Tap26
- Veckans fråga: Hur gammal är din processor?127
- Ny dator, input innan köp - spelburk 1440p, 25-30k13
- Hur undviker man bilångest?9
- Söker en I/o plåt till en MAXIMUS VIII RANGER1
- Vad spelar du för tillfället?1,9k
- TV-guiden 2024/25 – diskussiontråden231
- Ubiquiti Unifi4,2k
- Battlefield 6 får systemkrav inför den öppna betan17
- Säljes Akasa slimfan x2
- Säljes Zyxel ZyWALL USG FLEX 100AX firewall inkl 1 år licens
- Säljes Säljer TUF 4080 SUPER OC
- Säljes Laptops- HP Zbook 15u G3 + Lenovo L440
- Säljes Nytt Asrock B850 i moderkort, D5 vattenpump, chassi.
- Säljes Fractal Design Torrent vit
- Säljes Stationär dator INTEL ARC B580 Ryzen 5600x
- Skänkes Äldre elektronik
- Säljes Säljer samsung 32" 4k OLED 240hz
- Säljes XFX 6950 XT MERC 319, ROG Strix Helios GX601, MSI Optix MAG301RF 30", G-Skill 32GB DDR5
- Battlefield 6 får systemkrav inför den öppna betan17
- Intel Xess 2 blir tillgängligt för Geforce och Radeon10
- Slaget: SweClockers mot FZ i Battlefield 6 – anmäl dig nu!19
- AMD kan bygga NPU-instickskort31
- Så mycket tjänar utvecklare hos Microsoft96
- SFW: Stilrent och rymligt med NZXT H9 Flow RGB+27
- Quiz: Vad kan du om kontroverser och floppar?76
- Försökte hacka bankomater med Raspberry Pi35
- Youtube gissar användarnas ålder med AI73
- Elgatos nya webbkamera har utbytbara filter23
Externa nyheter
Spelnyheter från FZ