[英]Ag-Grid External Filter not working with props
I am trying to set an external filter from outside my grid-component but the isExternalFilterPresent-method is missing the passed on property value and is still undefined.我正在尝试从我的网格组件外部设置一个外部过滤器,但 isExternalFilterPresent 方法缺少传递的属性值并且仍然未定义。 I created an example with plunkr: https://plnkr.co/edit/PkksNSLPlianNXsz
我用 plunkr 创建了一个示例: https://plnkr.co/edit/PkksNSLPlianNXsz
Where is my mistake?我的错误在哪里?
useEffect(()=> {
if (gridApi) {
gridApi.onFilterChanged();
}
}, [props.filter])
...
const isExternalFilterPresent = () => {
return props.filter != 'everyone';
};
const doesExternalFilterPass = node => {
switch (props.filter) {
case 'below25':
return node.data.age < 25;
case 'between25and50':
return node.data.age >= 25 && node.data.age <= 50;
case 'above50':
return node.data.age > 50;
case 'dateAfter2008':
return asDate(node.data.date) > new Date(2008, 1, 1);
default:
return true;
}
};
...
return <AgGridReact
modules={modules}
columnDefs={columnDefs}
defaultColDef={defaultColDef}
animateRows={true}
isExternalFilterPresent={isExternalFilterPresent}
doesExternalFilterPass={doesExternalFilterPass}
onGridReady={onGridReady}
rowData={rowData} />
Using Ref solved the issue.使用 Ref 解决了这个问题。 AgGrid seems to keep the initial value of isExternalFilterPresent.
AgGrid 似乎保留了 isExternalFilterPresent 的初始值。
const [gridApi, setGridApi] = useState();
const [gridColumnApi, setGridColumnApi] = useState();
const [rowData, setRowData] = useState([]);
const ref = useRef(props.filter);
useEffect(()=> {
if (gridApi) {
ref.current = props.filter;
gridApi.onFilterChanged();
}
}, [props.filter])
const isExternalFilterPresent = () => {
return ref.current != 'everyone';
};
const doesExternalFilterPass = node => {
switch (ref.current) {
case 'below25':
return node.data.age < 25;
case 'between25and50':
return node.data.age >= 25 && node.data.age <= 50;
case 'above50':
return node.data.age > 50;
case 'dateAfter2008':
return asDate(node.data.date) > new Date(2008, 1, 1);
default:
return true;
}
};
https://plnkr.co/edit/gptzZ3ggeLiuT6ov https://plnkr.co/edit/gptzZ3ggeLiuT6ov
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.