Из do c, который вы указали:
Метод concat () используется для объединения двух или более массивов
Так вам нужно передать массив, а не элемент этой функции, я полагаю, это будет работать:
const list = prevState.list.concat([thing]);
Также я вижу, что ваш код перебирает новый массив и передает элементы один за другим, почему бы вам не весь массив?
if (data) {
setClasses(prevState => {
const list = prevState.list.concat(data);
// or list = [...prevState.list, ...data];
return { list };
});
}
Также я думаю, что вы пропустили тип массива в вас MainState
, хотя бы обновите его с типом any
, вот полный пример для number
type:
interface MainState {
list: readonly number[];
}
const data = [1, 2, 3]
const Component: React.FC = () => {
const [classes, setClasses] = useState({ list: [] } as MainState);
useEffect(() => {
if (data) {
setClasses(prevState => ({ list: [...prevState.list, ...data]}));
}
});
return <div>{classes}</div>
}