2017-05-24 3 views
0

Ich versuche, eindeutige IDs für meine React-Komponenten zu erstellen. Ich habe dieses Module erstellt:Erstellen Sie einen globalen Zähler in einem NodeJS-Modul

var _uid = 0; 

function getUid(): { 
    ++_uid; 
    return `_uid_${_uid}`; 
} 

export default getUid; 

die Hoffnung, dass die _uid würde jedes Mal erhöht werden, die Modulfunktion genannt, aber es ist immer 1. Wie kann ich es das Modul jedes Mal erreichen erhöhen wird benötigt?

+0

'var _uid: Zahl = 0;' Javascript nicht regulär. Meinst du, ich benutze eine andere Sprache? – jfriend00

+0

@ jfriend00 Nun, es ist Flow, aber es kompiliert zu JavaScript. Entschuldigung, ich habe die Art Annotation vergessen! – Victor

+0

Dann bitte markieren Sie es mit der entsprechenden Sprache. – jfriend00

Antwort

0

Java-Script-Verschluss hilft Ihnen dabei:

var getUid = (function(){ 
     var _uid: number = 0; 
     return function(){ 
     ++_uid; 
     return `_uid_${_uid}`; 
     } 
    })(); 

export default getUid; 
+1

Können Sie das erklären? Ich meine, warum sollte das funktionieren? – Victor

+0

hier _uid nur einmal infiltriert, wie es ist in anonymer Funktion, und ich rufe es einmal und es gibt innere Funktion zu GetUid, so dass danach immer wenn Sie getUid benötigen wird es nur den vorhandenen Wert erhöhen –

+0

Es ist nicht klar, wie dies etwas anderes tut als der ursprüngliche Code des OP. – jfriend00

Verwandte Themen