Почему массив пустой кода я пушу туда элемент?

 const tagArr = [];
  const [tagValue, setTagValue] = React.useState("");
  let obj = { value: tagValue };

  const addNewTag = () => {
    if (tagValue !== "") {
      tagArr.push(obj);
    }
  };

Если поставить дебаггер внутри функции addNewTag, то массив заполняется, но снаружи он пуст.


Ответы (3 шт):

Автор решения: Zhihar

а вызывать addNewTag пробовали?

addNewTag();

приводит к тому, что в массив данные пишутся

правда я (поскольку без реакта) сделал такой тестовый пример:

const tagArr = [];
const tagValue = "XXX";
let obj = { value: tagValue };

const addNewTag = () => {
    if (tagValue !== "") {
      tagArr.push(obj);
    }
};

addNewTag();

console.log(tagArr);

и в массив tagArr все записалось

→ Ссылка
Автор решения: Roman

вы используете setTagValue? если нет, то логично что tagValue пустой и это условие не проходит if (tagValue !== "") { ...

→ Ссылка
Автор решения: wefwe fwef

Массивy нужно дать состояние, и перезаписывать его каждый раз при добавлении нового значения:


  let [tagArr, setTagArr] = React.useState([]);
  let [tagValue, setTagValue] = React.useState("");

  let obj = { value: tagValue };
  const addNewTag = () => {
    if (tagValue !== "") {
      tagArr.push(obj);
      setTagArr([...tagArr]);
    }
  };
→ Ссылка