#113545
admin
Keymaster

Hi,

You can try this:

React + Redux integration (realistic pattern)
1. Treat Smart Table as controlled

<Table
  dataSource={data}
  sortMode="one"
  filterable
  paging
  pageIndex={page}
  pageSize={pageSize}
  onSort={handleSort}
  onFilter={handleFilter}
  onPage={handlePage}
/>

Wire events, Redux

const handleSort = (e) => {
  dispatch({
    type: 'SET_SORT',
    payload: e.detail.sortColumns
  });
};

const handleFilter = (e) => {
  dispatch({
    type: 'SET_FILTER',
    payload: e.detail.filters
  });
};

const handlePage = (e) => {
  dispatch({
    type: 'SET_PAGE',
    payload: e.detail.pageIndex
  });
};

Trigger API calls from state changes


useEffect(() => {
  dispatch(fetchTableData());
}, [sort, filter, page, pageSize]);

Fetch with state applied

export const fetchTableData = () => async (dispatch, getState) => {
  const { sort, filter, page, pageSize } = getState().table;

  const query = new URLSearchParams({
    page,
    size: pageSize,
    sort: JSON.stringify(sort),
    filter: JSON.stringify(filter)
  });

  const res = await fetch(<code>/api/data?${query}</code>);
  const data = await res.json();

  dispatch({ type: 'SET_DATA', payload: data });
};

Regards,
Markov