首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从@material-ui获取对xgrid组件的引用

如何从@material-ui获取对xgrid组件的引用
EN

Stack Overflow用户
提问于 2021-05-21 05:06:07
回答 1查看 82关注 0票数 0

我正在尝试获取对xgrid组件的全局(窗口)引用,这样我就可以从页面上的其他元素与它进行交互。下面的代码向javascript窗口返回一个名为xgridComponent的引用,但该引用只是绑定到所使用的html div标记。它不能访问组件本身的状态或函数。有人能告诉我我哪里做错了吗?

代码语言:javascript
复制
import React, { useState } from "react";
import ReactDOM from 'react-dom';
//import { DataGrid } from '@material-ui/data-grid';
import { XGrid } from '@material-ui/x-grid';
import "regenerator-runtime/runtime";

function filterModelChanged()
{
    console.log(this.getSortModel());
    console.log(this.state.filter.items);
}

function ReaderWorklist({ initialRows, columns }) {
    const [rows, setRows] = useState(initialRows);

    return (
        <div style={{ height: 600, width: '100%' }}>
        <XGrid rows={rows} columns={columns} onFilterModelChange={filterModelChanged} ref={(xgridComponent) => {window.xgridComponent = xgridComponent}} />
            </div>
    );
}

//
async function getData() {
    let response = await fetch("/services/reader_worklist_services/getList",
                                {credentials:"same-origin"});
    return await response.text();
}

//Need to wait till all elements are present before 'latching' onto them with the react componenet
document.addEventListener("DOMContentLoaded", function(event) {
    getData().then(function(data) {
        const rootElement = document.getElementById('reader_worklist_container');
        const jsData = JSON.parse(data);
        ReactDOM.render(<ReaderWorklist initialRows={jsData.rows} columns={jsData.columns} />, rootElement);
    });
});
EN

回答 1

Stack Overflow用户

发布于 2021-05-22 00:12:13

filterModelChanged移到ReaderWorkList中。在那里,您还应该声明getSortModel方法并初始化filter状态。此外,由于ReaderWorkList是一个函数组件,因此this不是您认为的那样,您不应该使用它。

就像这样

代码语言:javascript
复制
function ReaderWorklist({ initialRows, columns }) {
  const [rows, setRows] = useState(initialRows);
  const [filter, setFilter] = useState({
    items: [],
  });

  function getSortModel() {
    // return something
  }

  function filterModelChanged() {
    console.log(getSortModel());
    console.log(filter.items);
  }

  return (
    <div style={{ height: 600, width: '100%' }}>
      <XGrid
        rows={rows}
        columns={columns}
        onFilterModelChange={filterModelChanged}
        ref={(xgridComponent) => {
          window.xgridComponent = xgridComponent;
        }}
      />
    </div>
  );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67627931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档