Почему массив пустой кода я пушу туда элемент?
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]);
}
};