I'm trying to use debounce in lodash to delay the onChange, see the code below.
import React, { useState, useEffect, useCallback } from "react";
import { TopBar } from "@shopify/polaris";
import { debounce } from "lodash";
function SearchBar() {
  const [searchValue, setSearchValue] = useState("");
  const handleSearchFieldChange = ((value:string) => {
    setSearchValue(value);
  });
  const debounceLoadData = useCallback(debounce({searchValue} => fetchData, 1000), []);
  useEffect(() => {
    debounceLoadData();
    console.log({searchValue})
  }, [searchValue]);
  function fetchData(value:string) {
    console.log("searchValue " + value);
  }
  const searchFieldMarkup = (
    <TopBar.SearchField
      onChange={handleSearchFieldChange}
      value={searchValue}
      placeholder="Search Value"
    />
  );
  return <TopBar searchField={searchFieldMarkup} />;
}
In the beginning, I was tring to use searchValue in fetchData function but seems because of scope, it failed to read it, it was always empty though the state had been updated. 
As a result, I try to pass it in from the debounceLoadData but I don't know how I can do that as what in useCallback is a function invocation. How can I pass searchValue in fetchData inside debounce.
 
     
     
    