У меня есть свой собственный фильтр ag-grid:
export default forwardRef(
({ api, filterChangedCallback, column, filterModifiedCallback }, ref) => {
const inputRef = useRef()
const [filterText, setFilterText] = useState('')
const style = {
margin: '2px 0',
width: '200px',
height: '30px',
}
const onChange = e => {
const newValue = e.target.value
if (filterText !== newValue) {
setFilterText(newValue)
filterChangedCallback()
}
}
useImperativeHandle(ref, () => ({
doesFilterPass: () => true,
getModel: () => {
if (filterText) return { filter: filterText }
},
setModel: model => {
if (!_.isEmpty(model)) setFilterText(model.filter)
else setFilterText('')
},
isFilterActive: () => filterText !== '',
}))
return (
<div style={style}>
Filter:{' '}
<input
value={filterText}
ref={inputRef}
onChange={onChange}
className="form-control"
/>
</div>
)
},
)
В моей сетке есть несколько столбцов одного типа одновременно, поэтому я фильтрую данные в selectors
, и потому что doesFilterPass()
возвращает true
. Но когда я использую setModel()
для всех столбцов одного типа, значение изменяется только для одного столбца - для которого я изменил фильтр. Я хотел выяснить, в чем может быть проблема? В течение какого периода жизненного цикла фильтра вызывается метод isFilterActive()
?