DEV Community

Jelena Petkovic
Jelena Petkovic

Posted on

Da li je uvek potrebno definisati `props` i `state` u konstruktoru kod klasnih komponenti u TypeScript-u?

Kada radimo sa klasnim komponentama u React-u koristeći TypeScript, često se postavlja pitanje da li je potrebno i obavezno definisati props i state unutar konstruktora. Odgovor na ovo pitanje zavisi od specifičnih potreba tvoje komponente. U ovom blog postu, razmotrićemo kada i zašto koristiti konstruktor za definisanje props i state, kao i prednosti i nedostatke različitih pristupa.


Korišćenje konstruktora

Kada koristiti konstruktor:

1. Inicijalizacija stanja (state) na osnovu props:

Ako state zavisi od props ili ako treba da izvršiš dodatnu logiku prilikom inicijalizacije stanja, konstruktor je najbolji izbor.

2. Postavljanje početnih vrednosti stanja:

Kada želiš da postaviš početno stanje komponente, konstruktor je tradicionalan način za to.

Primer:

interface IMyComponentProps {
  initialCount: number;
}

interface IMyComponentState {
  count: number;
}

class MyComponent extends React.Component<IMyComponentProps, IMyComponentState> {
  constructor(props: IMyComponentProps) {
    super(props);
    this.state = {
      count: props.initialCount,
    };
  }

  render() {
    return <div>Count: {this.state.count}</div>;
  }
}
Enter fullscreen mode Exit fullscreen mode

Kada ne koristiti konstruktor

1. Jednostavna inicijalizacija stanja:

Ako state nije složen i ne zavisi od props, možeš koristiti direktnu inicijalizaciju stanja bez konstruktora.

2. Nema potrebe za složenom logikom:

Ako ne treba da izvršiš dodatnu logiku u vezi sa props ili state, možeš postaviti state direktno na nivou klase.

Primer:

interface IMyComponentProps {
  message: string;
}

interface IMyComponentState {
  count: number;
}

class MyComponent extends React.Component<IMyComponentProps, IMyComponentState> {
  state: IMyComponentState = {
    count: 0,
  };

  render() {
    return <div>Count: {this.state.count}</div>;
  }
}
Enter fullscreen mode Exit fullscreen mode

Prednosti i nedostaci različitih pristupa

Korišćenje konstruktora:

Prednosti:

  • Složenija inicijalizacija: Omogućava postavljanje state na osnovu props i izvršenje dodatne logike pre nego što komponenta renderuje.
  • Kontrola: Omogućava preciznu kontrolu nad inicijalizacijom i možeš lako dodati ili izmeniti logiku inicijalizacije.

Nedostaci:

  • Više koda: Korišćenje konstruktora može dodati više koda, što može učiniti komponentu težom za čitanje, naručito ako je inicijalizacija jednostavna.
  • Više složenosti: Uvođenje dodatne složenosti ako jednostavna inicijalizacija može biti obavljena bez konstruktora.

Direktna inicijalizacija (state) van konstruktora:

Prednosti:

  • Jednostavnost: Manje koda i jasniji kod za jednostavne komponente.
  • Bolja čitljivost: Komponente su često čitljivije kada se koristi direktna inicijalizacija za state.

Nedostaci:

  • Ograničena fleksibilnost: Ne možeš lako inicijalizovati state na osnovu props ili dodati složenu logiku prilikom inicijalizacije.

Zaključak

  • Koristi konstruktor ako treba da inicijalizuješ state na osnovu props ili ako imaš složenu logiku koja treba da se izvrši pre renderovanja komponente.
  • Izbegni konstruktor ako tvoja inicijalizacija state može biti jednostavno postavljena direktno na nivou klase i ne zahteva dodatnu logiku.

Oba pristupa su ispravna i zavise od složenosti tvoje komponente i specifičnih potreba. U savremenom React kodiranju, mnogi developeri preferiraju jednostavniji pristup direktne inicijalizacije ako to zadovoljava njihove potrebe.

Top comments (1)

Collapse
 
hanzla-mirza profile image
Mirza Hanzla • Edited

Plz always use the English language to write the posts. U get less amount of the likes because you did not use the English languge. English is the International language .And every person who join the dev community can understand the English language