#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. обновлен ответ