如何通过useState挂钩使用gridOptions

时间:2019-09-27 01:59:26

标签: reactjs ag-grid ag-grid-react

使用React 16.9.0和ag-grid-react和社区21.2.1: 我试图使用gridOptions而不是在网格本身上指定属性,但是如果我使用gridOptions,则在调用setter时,我的组件不会重新渲染。 noRowsSelected用于在启用true时禁用按钮。因此,仅当选中行中的复选框时,noRowsSelected才应该为false,并且不会禁用按钮。

此代码有效。

const [noRowsSelected, setNoRowsSelected] = useState(true);

const columnDefs = [
    {
      checkboxSelection: true,
      headerCheckboxSelection: true,
      headerCheckboxSelectionFilteredOnly: true,
      suppressMovable: true,
      suppressFilter: true,
      suppressSorting: true,
      width: 50
    }
]

return(
  <AgGridReact 
    .
    .
    .
    onSelectionChanged={params => {
        if (noRowsSelected){
            setNoRowsSelected(false);
        } else if (!params.api.getSelectedNodes().length){
            setNoRowsSelected(true);
        }
    }}
    .
    .
    . />
)

但是此代码不会重新渲染我的组件:

const gridOptions = {
        .
        .
        .
        onSelectionChanged(params) {
            if (noRowsSelected){
                setNoRowsSelected(false);
            } else if (!params.api.getSelectedNodes().length){
               setNoRowsSelected(true);
            }
        },
        .
        .
        .
    }
return(
    <AgGridReact gridOptions={gridOptions} />
)

上面的代码在选中第一个复选框时将我的按钮从禁用状态更改为禁用(重新渲染我的组件,因为调用了useEffect)。但是,任何取消检查或新检查都不会重新呈现。

我知道ag-grid会创建自己的组件,并且我猜想gridOptions不能让您使用这些功能更新其他组件。

0 个答案:

没有答案