Изменение состояния в моем компоненте не отражается в функциях обратного вызова определения столбца в Ag-Grid - PullRequest
0 голосов
/ 19 июня 2020

В компоненте, который использует Ag-Grid, у меня есть

const [updateData, setUpdateData] = useState({});

setUpdateData также вызывается откуда-то еще для сброса updateData на {}. Но этот сброс не отражается в этой функции onCellValueChanged, которая вставлена ​​в атрибут onCellValueChanged из columnDefs. Почему updateData изменено в других частях кода, но не отражено в columnDefs?

const onCellValueChanged = ({ column, data: cellData, newValue, node }) => {
    const existingEntry = updateData[cellData.account_id];
    if (existingEntry) {
      updateData[cellData.account_id] = {
        ...existingEntry,
        [column.colId]: Number(newValue),
      };
    } else {
      updateData[cellData.account_id] = { [column.colId]: Number(newValue) };
    }
    setUpdateData(updateData);
  };

1 Ответ

0 голосов
/ 22 июля 2020

Да, я и сам столкнулся с этой проблемой.

Это можно довольно легко воспроизвести с помощью этого фрагмента кода:

const [example, setExample] = useState(0);
const CellValueChanged = (params) => {
    console.log(example);
    setExample(example+ 1);
};

Ожидаемый поток будет следующим:

Edit a cell -> 0 (initial value of state) -> edit a cell -> 1 (new state value)

Однако на самом деле происходит следующий поток:

Edit a cell -> 0 (initial value of the state) -> edit a cell -> 0 (not grabbing the udpated state value?)
...