Javascript 如何在Handsontable中使用挂钩。粘贴前我需要检查数据

Javascript 如何在Handsontable中使用挂钩。粘贴前我需要检查数据,javascript,react-hooks,handsontable,rhandsontable,Javascript,React Hooks,Handsontable,Rhandsontable,在将数据插入表之前,我需要检查数据,如果数据不正确,请更改并插入。我试图创建一个带有beforeInsert前缀的钩子,并在这里描述这个逻辑,但它不起作用 我尝试了这段代码进行测试,但粘贴时没有任何变化 hot1.addHook('beforePaste', function(td1, row1, col1, prop1, value1, cellProperties1) { if (prop1 === 'cost1') { var c

在将数据插入表之前,我需要检查数据,如果数据不正确,请更改并插入。我试图创建一个带有beforeInsert前缀的钩子,并在这里描述这个逻辑,但它不起作用

我尝试了这段代码进行测试,但粘贴时没有任何变化

  hot1.addHook('beforePaste', function(td1, row1, col1, prop1, value1, cellProperties1) {
          if (prop1 === 'cost1') {
                  var cellMeta1 = this.getCellMeta(row, this.propToCol('cost2'));
                  cellMeta1.type = 'text';
            cellMeta1.source = 'hello';
          }
         }
      );
问题是在我称之为钩子之前

hot1.addHook('beforeRenderer', function(td, row, col, prop, value, cellProperties) {
            if (prop === 'warehouse') {
               var cellMeta = this.getCellMeta(row, this.propToCol('xWarehouse'));
               cellMeta.readOnly = (value != ' ' && value != '' && value != null) ? true : false;
           }
     }
);
如何检查并将更改后的值插入表中? 例子: 在输入3213处插入3213,只需删除空格即可

UPD:

我也试着用这个:

            if (prop === 'cost1' && value != '') {
               var cellMeta = this.getCellMeta(row, this.propToCol('cost1'));
               hot1.setDataAtCell(row,col,value);
           }
      });

但是在这种情况下,我的表冻结了

我们可以使用afterChange钩子更改值


var setter = false;
        hot1.addHook('afterChange', function(changes, src) {
            if (!setter) {
                setter = true;
                    for(let obj of changes){
                    var currentRow = obj[0];
                    var currentValue = obj[3].replace(/\s+/g,'');
                    var currentCol = obj[1].replace(/\s+/g,'');
                    var colNumber = hot1.propToCol(currentCol);
                    hot1.setDataAtCell(currentRow, colNumber, currentValue);
                    }
            } else {
                setter = false;
            }
        });


Handsontable将替换这些值​​更改和src本身,然后我们可以拉出插入的值并更改它,然后将其插入回

我们可以使用afterChange挂钩更改值


var setter = false;
        hot1.addHook('afterChange', function(changes, src) {
            if (!setter) {
                setter = true;
                    for(let obj of changes){
                    var currentRow = obj[0];
                    var currentValue = obj[3].replace(/\s+/g,'');
                    var currentCol = obj[1].replace(/\s+/g,'');
                    var colNumber = hot1.propToCol(currentCol);
                    hot1.setDataAtCell(currentRow, colNumber, currentValue);
                    }
            } else {
                setter = false;
            }
        });

Handsontable将替换这些值​​和src本身,之后我们可以取出插入的值并对其进行更改,然后再将其插入回去