Wpis z mikrobloga

Robię prostą apkę webową z backendem w #csharp i frontem w #react. Mam przycisk, który po naciśnięciu wywołuje funkcję łącząca się z backendem i przypisuje otrzymaną wartość do zmiennej state w komponencie. Przy łączeniu się z api normalnie zwraca mi dane, które potrzebuję, jednak mam problem z przypisaniem ich do zmiennych w komponencie. Z tego co rozumiem, w tej funkcji nie mam dostępu do pól z konstruktora, jednak nie mam pojęcia jak ten problem rozwiązać. Na dole zrzut ekranu z błędem, a tutaj link do kodu komponentu

#javascript
źródło: comment_15813576630OcHN5hIPVn1tvF19d7aFu.jpg
  • 9
@Sigmanus: Musisz przypisać kontekst w którym wywołujesz this.getUnsortedArray, aktualnie będzie to "Window", możesz to zrobić np. (pisze z "palca" więc mogę się gdzieś pomylić):

onClick={this.getUnsortedArray} zaminić na onClick={() => this.getUnsortedArray()}

albo w konstruktorze:

this.getUnsortedArray = this.getUnsortedArray.bind(this)

możesz też przerobić getUnsortedArray na funkcje strzałkową:

const getUnsortedArray = async () => {...}
@schriker: Dzięki wielkie, działa.
@trevoz: Sugerowałem się bardzo autogenerowaną templatką i komponentami z niej. Raczej w stronę backendu planuje pójść i to na nim się w głównej mierze skupiłem. Chciałem żeby to działało po prostu xD Duże znaczenie ma zrezygnowanie z takich komponentów i przejście na hooki?
@Sigmanus: Odchodzi się powoli od klasowych komponentów. Ogólnie dużo przyjemniej się pisze na hookach.
Ale jeśli jest to mały projekt i bardziej chcesz iść w stronę backendu to nie przejmuj się tym.
@trevoz: oj to czasem może zgubić. Pełna zgoda że wygodniej się pisze (szczególnie z reduxowymi hookami), ale imo niech ogarnie starą szkołę najpierw a potem się bawi. W hookach nie ma takich rzeczy jak callback po setState albo forceUpdate - co czasem jest mega przydatne.