使用 ref 查找嵌套元素

Using ref to find a nested element

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

<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 安装后呈现:(据我所知)

您可以在呈现所有内容后访问 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

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

例如

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

    <MySearchComponent style={{ position: 'absolute', top: 0, right: 0 }} />
</div>