Gridstack.js активно развивается, и с каждой новой версией появляются улучшения в API, а некоторые методы и параметры устаревают. Использование устаревших функций может привести к ошибкам, некорректной работе сетки или конфликтам с новыми функциями. В этом разделе рассмотрены основные устаревшие элементы, а также рекомендации по их замене.
GridStack.addWidget()
Ранее метод addWidget использовался для динамического
добавления виджетов в сетку:
grid.addWidget('<div class="grid-stack-item" gs-w="2" gs-h="2">...</div>');
Проблемы:
grid.addNode(), который работает напрямую
с объектами конфигурации узлов (GridStackNode).addNode.Современный подход:
const node = {
x: 0,
y: 0,
width: 2,
height: 2,
content: '<div>Содержимое</div>'
};
grid.addNode(node);
Это обеспечивает более точный контроль над расположением и параметрами виджета.
GridStack.removeWidget()
Ранее метод удалял DOM-элемент и обновлял сетку автоматически:
grid.removeWidget(el);
Новая практика: Метод removeWidget
устарел. Следует использовать
grid.removeNode(node), где
node — это объект узла, полученный через
grid.getNode(el):
const node = grid.getNode(el);
grid.removeNode(node);
Такой подход предотвращает возможные утечки памяти и обеспечивает правильную синхронизацию состояния сетки.
GridStack.movable() и
GridStack.resizable()
Старые методы использовались для включения или отключения возможности перетаскивания и изменения размеров отдельных виджетов:
grid.movable(el, false);
grid.resizable(el, true);
Замена: Используется объектная конфигурация узла с
полями locked и noResize:
const node = grid.getNode(el);
node.locked = true; // блокирует перемещение и изменение размеров
node.noResize = false; // разрешает изменение размеров
grid.update(node);
Такой подход унифицирует управление поведением виджетов через один объект.
cellHeight
Ранее задавал высоту ячейки сетки:
$('.grid-stack').gridstack({
cellHeight: 80
});
Замена: Параметр cellHeight устарел,
вместо него следует использовать
rowHeight:
const grid = GridStack.init({
rowHeight: 80
});
Новый параметр полностью контролирует высоту строк и корректно учитывается при адаптивной верстке.
verticalMargin
Задавал вертикальный отступ между виджетами:
$('.grid-stack').gridstack({
verticalMargin: 10
});
Современная практика: Используется свойство
margin, которое управляет как горизонтальными, так и
вертикальными отступами:
const grid = GridStack.init({
margin: 10
});
Этот способ упрощает конфигурацию и делает поведение сетки предсказуемым.
alwaysShowResizeHandle
Ранее этот параметр контролировал постоянное отображение ручек изменения размеров.
Замена: Используется поле resizable в
конфигурации виджета:
const node = {
x: 0,
y: 0,
width: 2,
height: 2,
resizable: { handles: 'all' }
};
grid.addNode(node);
Такой подход позволяет детально настраивать, какие ручки будут доступны и в каких ситуациях.
GridStackNode) для
добавления, удаления и настройки виджетов.cellHeight, verticalMargin,
addWidget, removeWidget, movable,
resizable) и заменить их на современные аналоги
(rowHeight, margin, addNode,
removeNode, locked,
noResize).| Устаревший метод/параметр | Современная замена |
|---|---|
addWidget() |
addNode() |
removeWidget() |
removeNode() |
movable() |
locked (через node) |
resizable() |
noResize (через node) |
cellHeight |
rowHeight |
verticalMargin |
margin |
alwaysShowResizeHandle |
resizable.handles |
Использование современных методов гарантирует совместимость с новыми версиями, упрощает поддержку кода и предотвращает возможные конфликты при расширении функциональности сетки.