У меня есть функция 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],
});
},
Пожалуйста, любая помощь будет оценена по достоинству, так как я действительно застрял. Что мне нужно сделать по-другому?
Вы храните values
как values: [...action.payload.values]
Если вы сделаете:
var text: String = "hello":
console.info([...text]);
Вы увидите, как оператор распространения, помещенный внутри массива, разделит вашу строку на массив.
Просто сохраните как values: action.payload.values
Вы можете передать [значения: e.target.value] в качестве значений в своем действии. Я имею в виду, вы должны убедиться, что вы всегда передаете массив, вы не можете передавать иногда строку, а иногда массив :)
Это на самом деле помогло решить проблему, но причина, по которой я сделал это таким образом, заключалась в распространении любого значения в массив, теперь это не так. Он просто берет первое значение и сохраняет его. У вас есть идеи, как я могу обойти это?