Доступ к компоненту состояния AG Grid из контейнера - PullRequest
0 голосов
/ 12 марта 2020

У меня есть компонент, который отображает AgGrid. Я обновляю rowCount до состояния этого компонента, однако мне нужно получить доступ к этому номеру (состоянию) из контейнера, в котором этот компонент отображается при

, это мое состояние

class ClientOrderHistory extends Component {
  constructor(props) {
    super(props);

    this.state = {
      columnDefs: createColumnDefs(props.OrderHistoryReducer.columnDefs),
      gridAPI: null,
      displayedCount: 0
    };
  }

onGridReady, я обновил функцию для подсчета количества строк

  onGridReady = params => {
    this.gridApi = params.api;
    this.columnApi = params.columnApi;
    this.setState({ gridAPI: params.api, columnAPI: params.columnApi });
    this.columnApi.autoSizeAllColumns();
    this.setState({displayedCount: this.gridApi.getDisplayedRowCount()});
    console.log('rowsCount', this.gridApi.getDisplayedRowCount());
  };

Я могу убедиться, что это работает, потому что я могу console.log состояние на componentDidUpdate и он отображает количество строк правильно в консоль. Я передаю этот компонент в другой контейнер для отображения этой сетки, однако я хотел бы получить это состояние displayCount в виде текстового вывода в контейнере.

Как мне достичь этого наилучшим образом?

1 Ответ

5 голосов
/ 13 марта 2020

Вы должны использовать onGridReady в своем контейнере и передавать его в качестве опоры вашему компоненту AgGrid. Вот как я его использую.

В противном случае вы можете передать функцию обратного вызова в качестве опоры вашему компоненту AgGrid и вызывать при выполнении onGridReady для вашего компонента AgGrid:

onGridReady = params => {
  this.gridApi = params.api;
  this.columnApi = params.columnApi;
  this.setState({ gridAPI: params.api, columnAPI: params.columnApi });
  this.columnApi.autoSizeAllColumns();
  this.setState({displayedCount: this.gridApi.getDisplayedRowCount()});
  // your callback fn as prop
  if (this.props.callback) {
    this.props.callback(this.gridApi.getDisplayedRowCount());
  }
};

На вашем контейнере:

callback = (rowCount) => // do stuff here
...