使用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不能让您使用这些功能更新其他组件。