I am able to change the globally declared searchText from an empty string to "cat" by writing in my input field, but for some reason that isn't updating the string interpolated value of ${searchText}.
In order to make that dynamic you should be doing something like this:
const apiUrl = () => `...${searchText}...`
You create a function to be executed and return the current value when you need it.
And then when you need to call it:
// just an example...
const url = apiUrl()
fetch(url)...