npm 包 @mideanet/react-grid-layout 使用教程

阅读时长 12 分钟读完

在前端开发中,常常需要使用到网格布局,以便于页面的排版和组件的布局。@mideanet/react-grid-layout 是一个常用的 React 组件库,以下是它的使用教程。

安装 @mideanet/react-grid-layout

@mideanet/react-grid-layout 的基本使用

-- -------------------- ---- -------
------ ----- ---- --------
------ ---------- ---- ------------------------------

------ ------- ----- ------------ ------- --------------- -
  -------- -
    ------ -
      ----------- ------------------ --------- -------------- -------------
        ---- ------- -------------- -- -- -- -- -- -- -- ------- --------------
        ---- ------- -------------- -- -- -- -- -- -- --------------------- --------
        ---- ------- -------------- -- -- -- -- -- -- -- ------- --------------
        ---- ------- -------------- -- -- -- -- -- -- --------------------- --------
      -------------
    -
  -
-

cols 属性设置了网格布局的列数,rowHeight 属性设置了每一行的高度,width 属性设置了网格布局的总宽度。

组件在网格布局中的位置和尺寸由 data-grid 属性来控制,其中 x 属性表示组件左上角在网格布局中的列数,y 属性表示组件左上角在网格布局中的行数,w 属性表示组件占用的列数,h 属性表示组件占用的行数,static 属性表示组件是否固定(不可拖拽和缩放)。

@mideanet/react-grid-layout 的高级使用

支持拖拽和缩放

若想要让组件可拖拽和缩放,则需要在 GridLayout 组件中加入 draggableHandleresizableHandle 属性。

-- -------------------- ---- -------
------ ----- ---- --------
------ ---------- ---- ------------------------------

------ ------- ----- ------------------- ------- --------------- -
  -------------- - -------- -- -
    --------------------
  -
  -------- -
    ------ -
      -----------
        ------------------
        ---------
        --------------
        ------------
        -----------------------------
        -------------------------------
        -------------------------------------
        ---- ------- -------------- -- -- -- -- -- -- -- ------- --------------
        ---- ------- -------------- -- -- -- -- -- -- --------------------- --------
        ---- ------- -------------- -- -- -- -- -- -- -- ------- --------------
        ---- ------- -------------- -- -- -- -- -- -- --------------------- --------
        ---- ------- -------------- -- -- -- -- -- -- --- ------------------------ ----- -----------
        ---- ------- -------------- -- -- -- -- -- -- --- -------------------------- ------- -----------
      -------------
    --
  -
-

在上面的示例中,.dragHandle 表示拖拽的手柄,.resizeHandle 表示缩放的手柄。

支持响应式布局

若想支持响应式布局,则需要在 GridLayout 中加入 breakpointslayouts 属性。

-- -------------------- ---- -------
------ ----- ---- --------
------ ---------- ---- ------------------------------

------ ------- ----- -------------------- ------- --------------- -
  ------------------ -
    -------------

    ---------- - -
      ------- ---
      --------- -----
    -
  -

  ------------------- -
    ---------------
      ------- -
        --- ---- -- -- -- -- -- --- -- ---
        --- ---- -- -- -- -- -- --- -- ---
        --- ---- -- -- -- -- -- --- -- ---
      --
      --------- ----------------- - ----
    ---

    --------------------------------- -------------------
  -

  ---------------------- -
    ------------------------------------ -------------------
  -

  ------------ - -- -- -
    ----- -------- - ----------------- - -----

    -- --------- --- -------------------- -
      ---------------
        --------- --------
      ---

      -- ---------- -
        ---------------
          ------- -
            --- ---- -- -- -- -- -- --- -- ---
            --- ---- -- -- -- -- -- --- -- ---
            --- ---- -- -- -- -- -- --- -- ---
          -
        ---
      - ---- -
        ---------------
          ------- -
            --- ---- -- -- -- -- -- -- -- ---
            --- ---- -- -- -- -- -- -- -- ---
            --- ---- -- -- -- -- -- --- -- ---
          -
        ---
      -
    -
  -

  -------- -
    ----- ----------- - ---- ----- --- ---- --- ---- --- ---- ---- ---
    ----- ------- - -
      --- ------------------
      --- ------------------
      --- -
        --- ---- -- -- -- -- -- --- -- ---
        --- ---- -- -- -- -- -- --- -- ---
        --- ---- -- -- -- -- -- --- -- ---
      --
      --- -
        --- ---- -- -- -- -- -- --- -- ---
        --- ---- -- -- -- -- -- --- -- ---
        --- ---- -- -- -- -- -- --- -- ---
      --
      ---- -
        --- ---- -- -- -- -- -- --- -- ---
        --- ---- -- -- -- -- -- --- -- ---
        --- ---- -- -- -- -- -- --- -- ---
      -
    --

    ------ -
      -----------
        ------------------
        ---------- --- --- --- --- -- --- -- ---- ---
        --------------
        ------------
        -------------------------
        ------------------
        ---- ---------------
        ---- ---------------
        ---- ---------------
      -------------
    --
  -
-

在上面的示例中,breakpoints 指定了断点,layouts 指定了不同断点下的网格布局。

计算网格布局

若想要计算网格布局的位置和尺寸,则需要引入 react-grid-layout-utils

-- -------------------- ---- -------
------ ----- ---- --------
------ ---------- ---- ------------------------------
------ - --------------------- ---------------- - ---- --------------------------

------ ------- ----- -------------- ------- --------------- -
  ------------------ -
    -------------

    ---------- - -
      ------- -
        --- ---- -- -- -- ---
        --- ---- -- -- -- ---
        --- ---- -- -- -- ---
        --- ---- -- -- -- ---
      --
      ------ -----
      ------- ---- ----
      ----- ---
      ---------- --
    --
  -

  ----------- - -------- -- -
    ------------------------
  -

  -------- - ------------ -- -
    ----- - ------ ------- ----- --------- - - -----------
    ----- - -- -- -- - - - -----------
    ----- -------- - ------------------------ -- -- -- ------- ----- ------------
    ----- ---- - -------------------- -- ------- ----- ------------

    ------ -
      --------- -----------
      ---- -------------
      ----- --------------
      ------ -----------
      ------- ------------
      --------- ---
      ----------- ----
      ------ -------
      ---------------- ----------
      ------------- --
      ---------- ---------
      ----------- ------------------
    --
  -

  -------- -
    ------ -
      -----------
        ------------------
        ---------
        --------------
        ------------
        ------------ ----
        -------------------------------
        --------------------------------- -- -
          ---- ------------------ ---------------------- ----------------------------------
          --------------
          ------
        ---
      -------------
    --
  -
-

在上面的示例中,引入了 calcGridItemPositioncalcGridItemSize 方法,分别用来计算组件的位置和尺寸。getSize 方法用来设置组件的样式。

总结

本文介绍了 @mideanet/react-grid-layout 的基本用法和高级用法,并展示了实际的代码示例。希望对读者能有所帮助,让读者在前端开发中更加得心应手。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005607c81e8991b448deaee

纠错
反馈