2017-02-09 8 views
1

i dieses Problem haben in reagieren Ich habe diese Funktion aber es ist nicht richtige Format vonreactjs die Syntax: url ist nur lesbar

check(img) { 
     console.log(img,typeof img) 
     const url=""; 
     const arrN = ["15","16","35","36","37","38","39","40","n15","n16","n35","n36","n37","n38","n39","n40"]; 
     for (var i = 0; i < arrN.length; i++) { 
      if (img === arrN[i]) { 
       url = "/blah/allIcons/blah"+img+"_en.png"; 
      }else{ 
       url = "/blah/allIcons/blah"+img+".png"; 
      } 
     } 
     return url; 
    } 

reagieren sie mir diese errror geben

Module build failed: SyntaxError: "url" is read-only 

, wie ich tun kann, es?

+1

Vielleicht definiert verwenden 'url' oben. Verwenden Sie einfach 'url =" "' anstelle von 'const url =" "'; –

+0

@AdnanUmer Sehr schlechte Beratung. Ich denke, Sie wissen nicht, warum die Deklaration von Variablen wichtig ist. – dfsq

+0

const ist etwas, das du nicht ändern kannst, benutze var oder let, lies den Unterschied zwischen const, var, let. http://stackoverflow.com/questions/762011/whats-the-difference-between-using-let-and-var-to-declare-a-variable –

Antwort

3

Wenn Sie die Variable url ändern, sollte sie nicht als Konstante deklariert werden. Verwenden Sie let:

check(img) { 
    const arrN = ["15", "16", "35", "36", "37", "38", "39", "40", "n15", "n16", "n35", "n36", "n37", "n38", "n39", "n40"]; 
    let url = ""; 

    for (var i = 0; i < arrN.length; i++) { 
    if (img === arrN[i]) { 
     url = "/blah/allIcons/blah" + img + "_en.png"; 
    } else { 
     url = "/blah/allIcons/blah" + img + ".png"; 
    } 
    } 
    return url; 
} 

Aber Sie scheinen nicht, es trotzdem zu müssen, als ganzes für-Loopcheck ineffizient zu sein scheint.

check(img) { 
    const arrN = ["15", "16", "35", "36", "37", "38", "39", "40", "n15", "n16", "n35", "n36", "n37", "n38", "n39", "n40"]; 

    if (arrN.indexOf(img) > -1) { // or if (arrN.includes(img)) {...} 
    return "/blah/allIcons/blah" + img + "_en.png"; 
    } 

    return "/blah/allIcons/blah" + img + ".png"; 
} 
+0

es sollte ** nicht ** als Konstante deklariert werden :) –

+0

@MayankShukla Haha, danke! – dfsq

0

Verwenden let url="" statt const url="": kann so optimiert werden.

The value of a constant cannot change through re-assignment, and it can't be redeclared.

Also, wenn Sie Variable const url="" deklarieren, können Sie später nicht mehr sagen url="/blah/allIcons/blah" + img + "_en.png"

+0

Können Sie weitere Informationen und Details mit Ihrer Antwort angeben? Danke – Robert

+0

@Robert, ich habe meine Antwort mit ein paar mehr Infos und Referenzen aktualisiert, aber ich werde nicht auf Details eingehen, die 'Let' und' Const' hier erklären, weil die Frage nicht danach ist. – ivn

Verwandte Themen