• По какой причине cloneNode undefined?

    @HeyAleksey
    Пойдем по-порядку:
    1. Никогда не используйте ключевое слово var. Есть вполне себе let и const
    2. Переменные iframe и virtualDom объявлены так, что их значение будет сбрасываться в undefined при каждом ререндере компонента. Отсюда, собственно и ошибка.
    Чтобы это поправить можно объявить эти переменные с использованием useRef
    const virtualDom = useRef();
    Далее в асинхронном коде произвести установку в ref
    virtualDom.current = dom;
    Ну и наконец, обернуть функцию save в useCallback:

    const save = useCallback(() => {
        const newDom = virtualDom.current?.cloneNoder(virtualDom); //Копируем данные, лежащие в виртуальном dom
        ...
      }, [virtualDom]);


    Кстати, обернуть в useCallback необходимо все функции, использующие переменную virtualDom и всё тоже свмое необходимо проделать относительно переменной iframe.

    P.S. Обязательно почитайте про хуки и жизненный цикл компонентов React.
    Ответ написан
    8 комментариев