svisch
@svisch

Почему сбрасывается ref на элемент?

Здравствуйте. Прошу вашей помощи, так как мыслей больше нет)
Итак, имеем некий компонент, в котором есть состояние:
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]
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы