Оператор If с выражением внутри .map() в React Return()

#reactjs

Вопрос:

Я считаю, что проблема, с которой я сталкиваюсь, заключается в том, что моя функция map находится в методе возврата в react. Неужели это невозможно сделать?

Что должно произойти, так это то, что я составляю карту с помощью данных опроса. Мне нужно усреднить столбцы для каждого. Поэтому я добавляю столбец 1 столбец 2 столбец 3, а затем нужно разделить на количество полученных ответов. Я не могу просто разделить на 3, потому что некоторые люди оставили один из ответов пустым. Поэтому я придумал код ниже, но он выдает мне эту ошибку: Expected an assignment or function call and instead saw an expression

 render() {    return (  lt;Jumbotron className="text-dark"gt;  lt;Divgt;  lt;Rowgt;  lt;Colgt;  lt;Table striped borderedgt;  lt;theadgt;  lt;thgt;Clientlt;/thgt;  lt;thgt;Namelt;/thgt;  lt;thgt;Score: Consultinglt;/thgt;  lt;thgt;Score: Talentlt;/thgt;  lt;/theadgt;  lt;tbodygt;  {  this.state.surveyData.map((client) =gt; {  let consultingScoreDiv = 0;  const consultingScore = client.value1   client.value2   client.value3;  if (client.value1 !== ""){ consultingScoreDiv   };  if (client.value2 !== ""){ consultingScoreDiv   };  if (client.value3 !== ""){ consultingScoreDiv   };   lt;tr key = { client.id } gt;  lt;tdgt;{client.orgName}lt;/tdgt;  lt;tdgt;{client.name}lt;/tdgt;  lt;tdgt;{consultingScore/consultingScoreDiv}lt;/tdgt;  lt;/trgt;  }     )  }  lt;/tbodygt;  lt;/Tablegt;  lt;/Colgt;  lt;/Rowgt;  lt;/Divgt;  lt;/Jumbotrongt;  )  }  

Ответ №1:

У тебя было мало проблем:

  • Вам не хватает return буквы » а » в вашем map .
  • Вы проверяете пустую строку вместо undefined или typeof
  • вы рассчитали общую сумму, даже если там не было никакой ценности.
  • Вы не проверили деление на 0.

Вот как это должно выглядеть:

 {this.state.surveyData.map((client) =gt; {  let consultingScoreDiv = 0;  let consultingScore = 0;  if (typeof client.value1 === "number") {  consultingScoreDiv  ;  consultingScore  = client.value1;  }  if (typeof client.value2 === "number") {  consultingScoreDiv  ;  consultingScore  = client.value2;  }  if (typeof client.value3 === "number") {  consultingScoreDiv  ;  consultingScore  = client.value3;  }   return (  lt;tr key={client.id}gt;  lt;tdgt;{client.orgName}lt;/tdgt;  lt;tdgt;{client.name}lt;/tdgt;  lt;tdgt;  {consultingScoreDiv gt; 0  ? consultingScore / consultingScoreDiv  : 0}  lt;/tdgt;  lt;/trgt;  ); })}  

Комментарии:

1. Это все еще дает мне ошибку «Не удалось скомпилировать» 3 раза для каждого оператора If. Говорит: «Ожидал вызова назначения или функции, а вместо этого увидел выражение». Ему не нравится, как выполняются утверждения if. Я не был уверен, не упускаю ли я что-то в своем синтаксисе, или React не позволяет вам использовать их таким образом.

2. обновлен ответ