---
# System prepended metadata

title: Untitled

---

## Using SWR and using react-query in Immersion Kit Search

## Using SWR

``` javascript
function useDictionary ({keyword, tags, waniKaniLevel, JLPTLevel, sorting, category}) {
  const searchObject = {
    'keyword': keyword,
    'tags': tags,
    'jlpt': JLPTLevel,
    'wk': waniKaniLevel,
    'sort': sorting,
    'category': category
  }
  const searchParams =  new URLSearchParams(searchObject).toString();

  const { data, error } = useSWR(`${process.env.HOST}/look_up_dictionary?${searchParams}`, fetcher)

  let examples = []
  let dictionaryEntries = []
  const hasExamples = data && data.data.length > 0;

  if (hasExamples) {
    examples = data.data[0].examples
    dictionaryEntries = data.data[0].dictionary
  }

  return {
    examples: examples,
    dictionaryEntries: dictionaryEntries,
    isLoading: !error && !data,
    isError: error
  }
}
```    

## Using react-query

```javascript
function useDictionary ({keyword, tags, waniKaniLevel, JLPTLevel, sorting, category}) {
  const searchObject = {
    'keyword': keyword,
    'tags': tags,
    'jlpt': JLPTLevel,
    'wk': waniKaniLevel,
    'sort': sorting,
    'category': category
  }
  const searchParams =  new URLSearchParams(searchObject).toString();

  const { data, error } = useQuery('lookupDictionary', () =>
     fetch(`${process.env.HOST}/look_up_dictionary?${searchParams}`).then(res =>
       res.json()
     )
   )

  let examples = []
  let dictionaryEntries = []
  const hasExamples = data && data.data.length > 0;

  if (hasExamples) {
    examples = data.data[0].examples
    dictionaryEntries = data.data[0].dictionary
  }

  return {
    examples: examples,
    dictionaryEntries: dictionaryEntries,
    isLoading: !error && !data,
    isError: error
  }
}

```

## Usage

```javascript=
function Dictionary({metaTags, keyword}) {
  const router = useRouter();
  const [searchKeyword, setSearchKeyword] = useState('');
  const [inputValue, setInputValue] = useState('');
  const [timer, setTimer] = useState(null);
  const [searchTags, setSearchTags] = useState([]);
  const [waniKaniLevel, setWaniKaniLevel] = useState('');
  const [JLPTLevel, setJLPTLevel] = useState('');
  const [sorting, setSorting] = useState('None');
  const [category, setCategory] = useState('');
  const { examples, dictionaryEntries, isLoading, isError } = useDictionary({keyword: searchKeyword, tags:searchTags, waniKaniLevel, JLPTLevel, sorting, category});
  ...
  
  useEffect(() => {
      if (keyword) {
          if (keyword.length > 0) {
            setInputValue(decodeURIComponent(keyword));
            setSearchKeyword(decodeURIComponent(keyword));
          }
      }
  }, [keyword]);
    
  const onChangeSearch = async(event) => {
    const {value} = event.target;
    setInputValue(value);
    
    if (timer) {
      clearTimeout(timer);
      setTimer(null);
    }
    setTimer(
      setTimeout(() => {
        setSearchKeyword(value);
        if (value.length > 0) {
            router.push(`/dictionary?keyword=${value}`, undefined, { shallow: true })
        } else {
            router.push(`/dictionary`, undefined, { shallow: true })
        }

      }, 1000)
    );

  }
  ...
  return (
    <>
      <MediaList
        examples={examples}
        ...
        />
    </>
  )

}
```

## Website
![](https://i.imgur.com/bYlmoKZ.jpg)
