React Grid Layout - переопределение статичных полей

Я использую React Grid Layout, чтобы перетаскивать элементы. Пример такого элемента:

<div 
    key={"id" + Math.random().toString(16).slice(2)} 
    data-grid={{ x: 4, y: 0, w: 2, h: 2 }} 
    style={{ width: '150px', height: '40px', backgroundColor: "#ccc", color: "#fff" }}
    resizeHandles={['s' | 'w' | 'e' | 'n' | 'sw' | 'nw' | 'se' | 'ne']}
>
    Поле ввода
</div>

Один из элементов создает новую сетку внутри уже имеющейся:

<div 
    key={"id" + Math.random().toString(16).slice(2)} 
    onClick={doubleClickHandler}
    data-grid={{ x: 1, y: 0, w: 5, h: 7, isResizable: isStatic ? false : true, static: isStatic ? true : false }} 
    style={{ backgroundColor: "#759ad9", color: "#fff" }}
>
    <GridLayout 
        className="layout"
        cols={5}
        rowHeight={30}
        width={650}
    >
        { mock }
    </GridLayout>
</div>

Проблема в том, что я могу передвигать элементы внутри дочерней сетки только тогда, когда ее параметр static равняется true. Я пробовал создать локальный state и изменять переменную isStatic по двойному нажатию по сетке. Значение переменной меняется, однако сетка не становится неподвижной. В то же время, если я просто задам в коде static: true без каких-либо условий, то элементы внутри дочерней сетки можно передвигать. В чем может быть проблема?

Код прилагаю:

import { Menu } from 'antd';
import { useState } from 'react';
import { GridWrapper } from '../Base/Base';
import GridLayout from "react-grid-layout";

function FormConstructor() {
    const items = [
        { label: 'Input', key: 'item-1' },
        // другие элементы
        { label: 'Field', key: 'item-8' },
    ];

    // переменная, которая изменяется, но не влияет на сетку
    const [isStatic, setIsStatic] = useState(false)
    // элементы родительской сетки
    const [elemsList, setElemsList] = useState([])
    // элементы дочерней сетки
    const mock = [
        <div 
            // props
        >
            Поле ввода
        </div>,
        <div 
            // props
        >
            Поле ввода
        </div>,
    ]

    // обработчик двойного клика, который должен делать дочернюю сетку статичной
    const doubleClickHandler = e => {
        if (e.detail === 2) setIsStatic(true)
    }

    const handleClick = val => {
        if (val === 'item-1') {
            setElemsList(elemsList.concat(
                <div 
                    key={"id" + Math.random().toString(16).slice(2)} 
                    data-grid={{ x: 4, y: 0, w: 2, h: 2 }} 
                    style={{ width: '150px', height: '40px', backgroundColor: "#ccc", color: "#fff" }}
                    resizeHandles={['s' | 'w' | 'e' | 'n' | 'sw' | 'nw' | 'se' | 'ne']}
                >
                    Поле ввода
                </div>
            ));
        // другие элементы
        } else if (val === 'item-8') {
            setElemsList(elemsList.concat(
                <div 
                    key={"id" + Math.random().toString(16).slice(2)} 
                    onClick={doubleClickHandler}
                    data-grid={{ x: 1, y: 0, w: 5, h: 7, isResizable: isStatic ? false : true, static: isStatic ? true : false }} 
                    style={{ backgroundColor: "#759ad9", color: "#fff" }}
                >
                    <GridLayout 
                        className="layout"
                        cols={5}
                        rowHeight={30}
                        width={650}
                    >
                        { mock }
                    </GridLayout>
                </div>
            ))
        }       
    }

    // вывод сетки на экран
    return (
        <div style={{display: "flex", height: "100%"}}>
            <GridWrapper options={{style: "width: calc(100% - 300px)"}}>
                <GridLayout 
                    className="layout"
                    cols={12}
                    rowHeight={30}
                    width={1600}
                >
                    { elemsList }
                </GridLayout>
            </GridWrapper>
            <Menu 
                items={items}
                style={{ width: "300px", float: "right", border: "1px solid #D4D1E8", borderRadius: "7px", zIndex: 9000 }} 
                onClick={e => handleClick(e.key)}
            />
        </div>
    )
}

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