Пользовательский фильтр Ag-Grid использует последнее значение вместо текущего - PullRequest
0 голосов
/ 31 января 2020

У меня есть свой собственный фильтр 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()?

...