I am using react table in my app with server side pagination with search. Whenever pagination changes I use onPaginationChange prop to call API. But I also have a search input text. For this I use useEffect to listen to search text changes and call API.
<Pagination
onPaginationChange={(pageSize, pageNo) => {
setNoOfRecords(pageSize);
dispatchGet(
dispatch,
currentOrg.id,
pageSize,
pageNo,
searchText,
);
}} //this is ok
/>
I also have a searchText state and useEffect for searchText change and API call:
const [searchText, setSearchText] = useState("");
useEffect(() => {
if (currentOrg) {
dispatchGetSubOrgs(
dispatch,
currentOrg.id,
noOfRecords,
currentPage, // I get these from redux store and get updated when API calls
searchText,
);
}
}, [searchText]);
Here Eslint complains that I need to add currentPage to dependency array. But if I add it and onPaginationChange gets called due to some pagination changes, currentPage will be updated and useEffect gets called and will call the API twice.
If I ignore this Eslint error, will it be a problem? Also, I don't know why React wants me to add everything in dependency array. What if I don't want theuseEffect to run when something in the dependency array changes? I'm forced to add it because it might have stale values. How do I deal with this?