#javascript #reactjs #typescript #react-hooks
Вопрос:
У меня возникли проблемы с реакцией на машинопись, когда я пытаюсь определить значение.
Вот в чем ошибка:
Аргумент типа «{} «не может быть присвоен параметру типа» SetStateAction<логический[]>». Тип «{}» не может быть присвоен типу » (предыдущее состояние: логическое[]) => логическое[]». Тип «{} «не соответствует подписи» (предыдущее состояние: логическое[]): логическое[]».ts(2345)
Вот мой следующий код:
const [addButtonFruits, setAddButtonFruits] = useState([true]);
useEffect(() => {
const initialAddButtonFruits = {};
fruitsArray.map((each) => (initialAddButtonFruits[each] = true));
setAddButtonFruits(initialAddButtonFruits);
}, []); // only executed for initial rendering
Ответ №1:
В сообщении об ошибке говорится, что именно не так. Ваша переменная состояния addButtonFruits
представляет собой логический массив. И вы пытаетесь присвоить ему объект.
Попробуй:
const initialAddButtonFruits = fruitsArray.map(each => true);
setAddButtonFruits(initialAddButtonFruits);
Если вы хотите сохранить объект:
const [addButtonFruits, setAddButtonFruits] = useState({});
useEffect(() => {
const initialAddButtonFruits = {};
fruitsArray.forEach((each) => (initialAddButtonFruits[each] = true));
setAddButtonFruits(initialAddButtonFruits);
}, []); // only executed for initial rendering
Ответ №2:
addButtonFruits-это логический массив. Вы не можете назначить пустой объект переменной логического массива.
const initialAddButtonFruits = [];