React useEffectの使い方②

import React, { useState, useEffect } from "react";
import axios from "axios";

function App() {
	const [items, setItem] = useState([]);
	const [inputValue, setInputValue] = useState("react");
	const [isLoading, setIsLoading] = useState(false);
	const [query, setQuery] = useState(inputValue);

	useEffect(() => {
		const fetchData = async () => {
			setIsLoading(true);
			const result = await axios(
				`https://hn.algolia.com/api/v1/search?query=${query}`
			);
			setItem(result.data.hits);
			setIsLoading(false);
		};
		fetchData();
	}, [query]);

	return (
		<>
			<form
				onSubmit={(e) => {
					e.preventDefault();
					setQuery(inputValue);
				}}
			>
				<input
					type="text"
					value={inputValue}
					onChange={(e) => {
						setInputValue(e.target.value);
					}}
				/>
				<input type="submit" value="サブミット" />
			</form>

			{isLoading ? (
				<p>Loading</p>
			) : (
				<ul>
					{items.map((item) => (
						<li key={item.objectID}>
							<a href={item.url}>{item.title}</a>
						</li>
					))}
				</ul>
			)}
		</>
	);
}

export default App;

第2引数に設定した引数の値が変更された場合のみ、useEffectを実行する