Доступ к состоянию с Ag-сеткой - PullRequest
0 голосов
/ 07 ноября 2018

Возможно, это не проблема Ag-Grid, но я застрял на ней некоторое время.

Наличие компонента, реагирующего следующим образом:

export default class Recrutement extends React.Component {
    constructor(props) {
      super(props);
      this.state = {
        candidats: [], // We suppose here that values are filled
        values: [] // We suppose here that values are filled
      };
      this.getContacts();
      this.getValues();
    }


    columnDefs = [{
        cellRenderer: function(params) {
          return '<span><i class="material-icons">&#xE5D3;</i></span>';
        },
        suppressMovable: true,
        width: 100,
        colId: 1,
        //width: (self.columnDefinitions.find(function (v) { return v.colId === 1 }) || {}).size || 50,
        pinned: 'left',
        suppressFilter: true
      },
      {
        width: 100,
        headerName: "Formation",
        editable: true,
        colId: 7,
        suppressMovable: true,
        //width : (self.columnDefinitions.find(function (v) { return v.colId === 7 }) || {}).size || null,
        autoHeight: true,
        cellEditor: 'agSelectCellEditor',
        valueGetter: function(params) {
          if (params.data.candidat.formationId === null)
            return "";
          return this.state.values.formations.find(function(val) {
            return val.id === params.data.candidat.formationId;
          }).name;
        },
        valueSetter: function(params) {
          return selectValueSetter(this.state.values.formations, true, 'formationId', params);
        },
        cellEditorParams: function() {
          return {
            values: this.state.values.formations
              .sort(function(a, b) {
                if (a.name < b.name) return -1;
                if (a.name > b.name) return 1;
                return 0;
              })
              .map(function(v) {
                return v.name;
              })
          };
        },
        filter: "anyOfWordsFilter"
      },
    ];
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

Я хочу, чтобы valueGetter, например, имел доступ к this.state. Однако здесь я просто получаю каждый раз:

Uncaught TypeError: Невозможно прочитать свойство 'состояние' из неопределенного

Я попробовал систему привязки (или, возможно, я сделал это неправильно, возможно: D), стрелка одна, однако ни одна из них не работает.

Как я могу получить доступ к состоянию в этом состоянии? Чтобы использовать Ag-grid, мне нужно, чтобы мой массив оставался таким (функция может меняться)

1 Ответ

0 голосов
/ 07 ноября 2018

заменить

valueSetter: function(params) {
      return selectValueSetter(this.state.values.formations, true, 'formationId', params);
},

от

valueSetter: (params) => {
      return selectValueSetter(this.state.values.formations, true, 'formationId', params);
},

и, пожалуйста, готов этот пост и этот

...