Как передать строку как одно значение, а не как разделенное значение

У меня есть функция onClick div, которая вызывает функцию отправки и передает ей целевое значение (т.е. e.target.value). Передаваемое значение сохраняется в массиве.

Однако я заметил, что происходит что-то странное. В массиве, в который передается значение, первое значение хранится неправильно.

Например, если я передам 'hello', в массиве он будет сохранен как ['h','e','l','l','o']. И это происходит только с первым переданным значением, остальные сохраняются правильно.

Это моя функция, которая называется onClick;

const handleSelectedFilters = (e: any) => {
  dispatch(
    actions.storeData({
      name: data.name,
      values: e.target.value,
    }),
  );
}

И это действие в моем файле редуктора;

export interface DataState {
  name: string,
  values: Array<string>,
}

export interface FilterState {
  storedData: DataState[];
}

applyData: (
      state,
      action: PayloadAction<DataState>,
    ) => {
        state.storedData.push({
          name: action.payload.name,
          values: [...action.payload.values],
        });
    },

Пожалуйста, любая помощь будет оценена по достоинству, так как я действительно застрял. Что мне нужно сделать по-другому?

Поведение ключевого слова "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
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы храните values как values: [...action.payload.values]

Если вы сделаете:

var text: String = "hello":
console.info([...text]);

Вы увидите, как оператор распространения, помещенный внутри массива, разделит вашу строку на массив.

Решение

Просто сохраните как values: action.payload.values

Это на самом деле помогло решить проблему, но причина, по которой я сделал это таким образом, заключалась в распространении любого значения в массив, теперь это не так. Он просто берет первое значение и сохраняет его. У вас есть идеи, как я могу обойти это?

Ire 16.03.2022 19:06

Вы можете передать [значения: e.target.value] в качестве значений в своем действии. Я имею в виду, вы должны убедиться, что вы всегда передаете массив, вы не можете передавать иногда строку, а иногда массив :)

Balastrong 16.03.2022 19:08

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