Jestem nowy, aby zareagować pochodzi z tła nie jest klasą, przeszukałem wokół sieci, ale nie znalazłem żadnych informacji

Oto przykład:

   export default ViewTestStuff => {

     constructor(){
       // errors
       }
        return (
            <div>
                <p>Hello</p>
            </div>
        )
    }

Więc moje pytanie brzmi "=> {}" w tym przykładzie jest to klasa? i dlaczego nie mogę w nim utworzyć konstruktora, jeśli jest to rzeczywiście klasa

0
EmpJemz 4 czerwiec 2018, 16:42

3 odpowiedzi

Najlepsza odpowiedź

Jest to funkcja strzałki z ES6 i nie ma nic wspólnego z reakcją.js

const add = (a, b) => a+b;

To tylko funkcja.

Wywołanie add(2, 3) zwraca {x1}}

Jedną ważną rzeczą do zapamiętania jest, że funkcje strzałek nie mają łańcucha prototypu. Nie możesz również nazwać ich new.

Inną rzeczą do zauważenia jest to, że this jest związany kontekstem, w którym zdefiniowana jest funkcja strzałki.

const obj = {
    name: "Lukas",
    method: function() {
        var self = this;
        console.log(this.name === "Lukas");
        return [
          function() {
              console.log(this !== self)
          }, 
          () => {
              console.log(this === self)
          }
        ];
    }
}

const [func, arrow] = obj.method();

func();
arrow();

Zobacz Dokumenty

1
Luke 4 czerwiec 2018, 13:57

Jest to funkcja strzałki! Ładna funkcja na ES6, która jest już zaimplementowana na większości nowoczesnych przeglądarek.

Something => {} oznacza funkcję z czymś, co jest parametrem i pustym ciałem. To jest podobne do:

function (Something) {
}

W twoim przypadku jest taki sam jak:

export default function (ViewTestStuff) {

 constructor(){
   // errors
   }
    return (
        <div>
            <p>Hello</p>
        </div>
    )
}

I rzeczywiście jest nieprawidłowy.

1
Murilo Cruz 4 czerwiec 2018, 13:55

To nie jest rzeczą reagowania ... Funkcje strzałek są nowe w ES6 JavaScript. Więcej informacji można znaleźć tutaj HTTPS: // deweloper. mozilla.org/en-us/docs/web/javascript/reference/functions/arrow_functions.

0
Magdalena Rumakowicz 4 czerwiec 2018, 13:45