Возникли проблемы с машинописным текстом в react

#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 = [];