5

我正在使用该gridjs-react库创建一个表,如下所示:

<Grid
  columns={['Name', 'Email']}
  data={[
    ['John', 'john@example.com'],
    ['Mike', 'mike@gmail.com']
  ]}
  ref={tableRef}
  search={true}
  pagination={{
    enabled: true,
    limit: 1,
  }}
/>

但是,我想最终向 dom 添加一个项目来获得这个:

在此处输入图像描述

我考虑过使用ref,但我无法访问以下 div,因为它仅在组件 Grid 安装后呈现:(据我所知)

在此处输入图像描述

4

2 回答 2

3

useEffect当呈现所有内容时,您可以访问块中的网格引用:

useEffect(()=> {
    const grid = ref.current.wrapper.current; //--> grid reference
    const header = grid.querySelector(".gridjs-head"); //--> grid header
    const itemContainer = document.createElement("div"); //--> new item container
    header.appendChild(itemContainer);
    ReactDOM.render(<Input />, itemContainer); //--> render new item inside header
  }, []);

您将需要使用css来获得元素内的所需位置。

工作示例:https ://stackblitz.com/edit/react-r5gsvw

于 2021-01-23T17:48:03.290 回答
0

或者只是为您想要的组件使用 CSS 解决方案。

例如

<div style={{ position: 'relative'}}>
    <Grid 
    ....
    />

    <MySearchComponent style={{ position: 'absolute', top: 0, right: 0 }} />
</div>
于 2021-01-23T17:51:59.853 回答