First, I'd like to say I enjoyed the article!
However, as an experienced React developer, I frequently come across developers coming to React from other libraries/frameworks. Many of these seem to struggle understanding the dependency array. Some like to use it as a means to write imperative code, declaring triggers in the dependency array - while omitting actual dependencies.
In this case, declaring q inside useEffect is the way to go, or make sure qhas a stable reference and include it in the dependency array. This particular eslint rule comes from the React team, and I think in general we should play by their rules. They know React now, and probably also what's coming.