Concat превращает массив в объект Javascript + Next JS

Мне действительно трудно понять, где этот код идет не так. Я не могу объединить два раза подряд, потому что это превращает мой массив в объект. Вот код ...

this.setState((prevState) => ({
      //Add new bet to users array of bets
      usersByName: {
        ...prevState.usersByName,
        [newBet[0].name]: {
          ...prevState.usersByName[newBet[0].name].concat(newBet),
          amountleft: prevState.usersByName[newBet[0].name].amountleft - newBet[0].amount,
          lastweekroi: prevState.usersByName[newBet[0].name].lastweekroi,
          thisweekroi: prevState.usersByName[newBet[0].name].thisweekroi,
        },
      },
    }))

Первоначальная структура правильная и выглядит так.

Concat превращает массив в объект Javascript + Next JS

Когда я запускаю команду setstate, она меняет структуру на это, и я не могу снова запустить concat, потому что получаю ошибку .concat is not a function

Concat превращает массив в объект Javascript + Next JS

Кто-нибудь видит способ исправить это? Массивы, JSON и все такое сбивает с толку. Спасибо

Когда вы распространяете объект, вы получите объект обратно. Вместо этого вы можете попробовать вставить его в свой массив. Вы используете редукцию? В целом, это слишком много состояния, чтобы удерживать его в состоянии одного компонента, imho. Даже переход на useState позволит вам иметь больше фрагментов состояния, которые можно обновлять индивидуально, что, вероятно, также упростит это.

jmargolisvt 30.03.2021 00:46

К сожалению, учитывая мой опыт, сокращение - это слишком сложная задача, чтобы начинать в данный момент. Каковы недостатки того, что я делаю. Просто читаемость кода? скорость? представление? Спасибо

Thomas Byy 30.03.2021 02:17

Любые предложения с точки зрения кода. Я пробую все и ни к чему

Thomas Byy 30.03.2021 04:37

Обратной стороной является то, что, как вы понимаете, сложно обновлять. Никакого сокращения здесь не требуется, если вы действительно хотите, чтобы все это состояние было локальным для вашего компонента. Это может помочь вам увидеть, как массивы управляются с помощью useState: stackoverflow.com/questions/54676966/…

jmargolisvt 30.03.2021 06:02

Отвечает ли это на ваш вопрос? Метод push в React Hooks (useState)?

juliomalves 01.04.2021 19:31
Поведение ключевого слова "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
5
34
0

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