2017-02-09 4 views
1

у меня этот вопрос в реакции я иметь эту функцию, но его не правильный формат реагироватьreactjs в SyntaxError: URL является только для чтения

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; 
    } 

это дает мне этот errror

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

, как я могу сделать Это ?

+1

Возможно использовать определили 'url' выше. просто используйте 'url =" "' вместо 'const url =" "'; –

+0

@AdnanUmer Очень плохой совет. Я думаю, вы не знаете, почему важно объявление переменной. – dfsq

+0

const - это то, что u не может изменить, использовать var или let, читать diff между const, var, let. http://stackoverflow.com/questions/762011/whats-the-difference-between-using-let-and-var-to-declare-a-variable –

ответ

3

Если вы изменяете переменную url, то ее нельзя объявлять постоянной. Используйте 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; 
} 

Но вы, кажется, не нужно в любом случае, как и все для цикла проверка кажется неэффективной. Может быть оптимизирована так:

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

он должен ** не ** быть объявлен как константа :) –

+0

@MayankShukla Ха-ха, спасибо! – dfsq

0

Использование let url="" вместо const url="".

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

Так что если вы объявляете переменную const url="", вы не можете сказать позже url="/blah/allIcons/blah" + img + "_en.png"

+0

Не могли бы вы предоставить дополнительную информацию и подробную информацию с ответом? Спасибо – Robert

+0

@Robert, я обновил свой ответ с дополнительной информацией и ссылками, однако я не буду вдаваться в подробности объяснения 'let' и' const' здесь, потому что вопрос не в этом. – ivn

 Смежные вопросы

  • Нет связанных вопросов^_^