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.
- Wordle på svenska - ordlig.se9,2k
- Vilken film såg du senast?15k
- Så sorterar nya Start-menyn program i kategorier30
- 9070 / XT - Owners club807
- Feedback på PC för tung videoredigering + gaming (budget 8000–9000 kr)6
- BT8 snigelfart på LAN41
- Geekbench - Dela dina resultat från 202530
- Köpråd ny dator0
- Beg dator och Banksäkerhet8
- Så funkar obegränsad surf hos operatörerna261
- Säljes Yamaha RX-V383 5.1 receiver + subwoofer Yamaha yst-sw012
- Köpes Mini-ITX / AMD AM5 / Intel LGA1700
- Säljes iPad Pro 13" M4 256GB (Space Black) + Apple Pencil Pro + ESR Skal med stativ
- Säljes Ryzen 5800X3D / RTX 2080 Super FE / 32GB RAM / 1.5GB SSD
- Bytes Söker gpu uppgradering!
- Säljes ASUS ROG Strix GeForce RTX 2080 Ti – 11GB
- Köpes 7950x + Mobo + 32gb RAM
- Säljes Hercules DG400BB Laptopställ
- Säljes Garderobrensing - Dator / K860 Tangentbord / Musmatta / CPU
- Säljes PS5 Disc edition + 13 Spel - Nintendo Switch (2017) - Nintendo Switch Lite
- Så sorterar nya Start-menyn program i kategorier30
- Microsoft belönade 13-åring för säkerhetsupptäckt12
- Fortsatta bedrägerier med hårddiskar och SSD:er49
- Samsung mot Kingston – test av PCI Express 5.0 SSD27
- RTX 5000-serien äntrar Steam Hardware Survey30
- Testpilot: MSI Raider A18 HX A9W – RTX 5080 och X3D-processor2
- Stop Killing Games når 1 miljon påskrifter45
- HP vill göra det tryggare att köpa begagnad dator27
- KO stämmer Hallon för brister i kundtjänst44
- Quiz: Vad kan du om gränssnitt i spel?149
Externa nyheter
Spelnyheter från FZ