Здравствуйте. Прошу вашей помощи, так как мыслей больше нет)
Итак, имеем некий компонент, в котором есть состояние:
conset [reExport, setReExport] = useState([reExportPattern])
где reExportPattern объект - структура данных
При рендере эту структуру я отрисовываю в интерфейсе в виде блоков элементов. Соответственно, если массив больше 1, то эти блоки будут повторяться.
Так же имею:
const modelFieldReExp = useRef([modelFieldReExpPattern])
где modelFieldReExpPattern шаблон описывающий reExport с рефами на него.
Метод добавления re:
function addReExportRawHandler() {
let nextReExport = [...reExport];
let newItem = reExportPattern();
nextReExport.push(newItem);
modelFieldReExp.current.push(modelFieldRegExpPattern);
setReExport(nextReExp);
}
тут все работает и рефы при добавлении блоков присутствуют. А вот при удалении:
function removeReExportRawHandler(e) {
var reIdx = e.target.parentNode.parentNode.getAttribute('reidx');
let nextReExport = [...reExport];
if (reExport.length > 1) {
modelFieldRegExp.current.pop()
nextReExport.splice(reIdx, 1);
setReExport(nextReExport);
}
}
рефы на reExport становятся null. Что это может быть? Наверное не понимаю что-то в жизненном цикле реката.
Кстати пробовал еще по обновлении reExport делать и useEffect и useLayoutEffect, чтобы менялся modelFieldRegExp. Т.е. re
reExport.forEach и для каждого элемента в modelFieldRegExp создаю соответственно свой элемент, но почему-то ругается при рендере на отсутствие необходимого modelFieldRegExp[inxex]