Оператор карты React

Я пытаюсь объявить переменную «ratingVal», которой присваивается случайное значение «нет» внутри оператора карты. Я хочу использовать переменную в компоненте рейтинга, а также отображать ее на экране. Однако я получаю сообщение об ошибке

Parsing error: Unexpected token

Каков правильный синтаксис для объявления переменной в этом случае?

renderProductsCardsList(products){

   return products.map(
     (product, i) =>

       let ratingVal = Math.floor(Math.random() * 5) + 1
       <Rating initialRating = {ratingVal} readonly></Rating>
       <div>{ratingVal}</div>
   )
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
405
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Используйте функцию, чтобы вернуть продукт внутри функции карты:

function renderProductsCardsList(products) {
    let rating = () => {
        let ratingVal = Math.floor(Math.random() * 5) + 1
        return (<>
            < Rating initialRating = {ratingVal} readonly ></Rating >
            <div>{ratingVal}</div>
        </>)
    }
    return products.map(product => rating())
}
Ответ принят как подходящий

У вас не может быть оператора объявления внутри стрелочной функции с неявным возвратом. Для этого используйте явный синтаксис возврата. Кроме того, вы не можете вернуть несколько элементов из метода карты. Оберните их внутри <React.Fragment>:

renderProductsCardsList(products){
   return products.map(
     (product, i) => {
       let ratingVal = Math.floor(Math.random() * 5) + 1
       return (
            <React.Fragment>
                <Rating initialRating = {ratingVal} readonly></Rating>
                <div>{ratingVal}</div>
             </React.Fragment>
       )
   })
}

или оценить его при назначении

renderProductsCardsList(products){
   return products.map(
     (product, i) => 
            <React.Fragment>
                <Rating initialRating = {Math.floor(Math.random() * 5) + 1} readonly></Rating>
                <div>{ratingVal}</div>
             </React.Fragment>
   )
}

После </React.Fragment> не хватает закрывающей скобки

samb102 18.02.2019 17:14

У вас может есть выражение присваивания в стрелочной функции с неявным возвратом. У вас не могу есть оператор декларация.

Patrick Roberts 18.02.2019 17:32

Верхний фрагмент кода выглядит так, как я хочу, но все равно выдает -> Ошибка синтаксического анализа: неожиданный токен

TommyK 18.02.2019 18:07

к оператору «let ratingVal = Math.floor(Math.random() * 5) + 1». И если я удалю эту строку, она жалуется на возврат (строка

TommyK 18.02.2019 18:36

Две проблемы:

  • Отсутствующие скобки после стрелки =>: вы можете опустить скобки только в том случае, если вы делаете неявный возврат в одной строке.
  • Плавающий JSX в вашем коде: я не уверен, что вы хотите сделать. В конце метода map есть две плавающие строки JSX. В настоящее время вы ничего не возвращаете. Но я думаю, вы хотите вернуть компонент Rating.

    renderProductsCardsList(products) { return products.map( (product, i) => { let ratingVal = Math.floor(Math.random() * 5) + 1 return <Rating initialRating = {ratingVal} readonly></Rating> }) }

Другие вопросы по теме