typescript 和 react 搜索栏 api fetch
typescipt and react searchbar api fetch
我正在尝试在此搜索栏组件中获取作者姓名。这个想法是在搜索栏中获取作者的名字,并显示作者的图片和作者的名字。但这对我不起作用。有人可以帮助并解释为什么这不起作用。谢谢。
import { useEffect, useState } from "react";
import "./Searchbar.css";
import axios from "axios";
function Searchbar() {
const [query, setQuery] = useState("");
const [data, setData] = useState([]);
useEffect(() => {
const fetchData = async () => {
const res = await axios.get(`https://picsum.photos/v2/?=${query}`);
setData(res.data);
};
if (query.length === 0 || query.length > 2) fetchData();
}, [query]);
return (
<div className="app">
<input
className="search"
placeholder="Search..."
onChange={(e) => setQuery(e.target.value.toLowerCase())}
/>
<div>{data}</div>
</div>
);
}
export default Searchbar;
你的url错了。
`https://picsum.photos/v2/?=${query}`
这转到了错误的页面。您可以转到 picsum.photos 并相应地使用它们可用的 API 端点,例如它们的列表端点。
https://picsum.photos/v2/list
貌似目前作者数量有限,你可以去获取,然后将作者数组存储在data
中,然后单独处理搜索。
const [query, setQuery] = useState("");
const [data, setData] = useState([]);
// Add one more state to store the authors being searched for
const [searchResults, setSearchResults] = useState([]);
useEffect(() => {
const fetchData = async () => {
const res = await axios.get(`https://picsum.photos/v2/list`);
setData(res.data);
};
fetchData();
}, []);
// Query that handles searching
useEffect(() => {
setSearchResults(data.filter((authorData) => authorData['author'].toLowerCase().includes(query)));
}, [query, data]);
return (
<div className="app">
<input
className="search"
placeholder="Search..."
onChange={(e) => setQuery(e.target.value.toLowerCase())}
/>
<div>{searchResults}</div>
</div>
);
我正在尝试在此搜索栏组件中获取作者姓名。这个想法是在搜索栏中获取作者的名字,并显示作者的图片和作者的名字。但这对我不起作用。有人可以帮助并解释为什么这不起作用。谢谢。
import { useEffect, useState } from "react";
import "./Searchbar.css";
import axios from "axios";
function Searchbar() {
const [query, setQuery] = useState("");
const [data, setData] = useState([]);
useEffect(() => {
const fetchData = async () => {
const res = await axios.get(`https://picsum.photos/v2/?=${query}`);
setData(res.data);
};
if (query.length === 0 || query.length > 2) fetchData();
}, [query]);
return (
<div className="app">
<input
className="search"
placeholder="Search..."
onChange={(e) => setQuery(e.target.value.toLowerCase())}
/>
<div>{data}</div>
</div>
);
}
export default Searchbar;
你的url错了。
`https://picsum.photos/v2/?=${query}`
这转到了错误的页面。您可以转到 picsum.photos 并相应地使用它们可用的 API 端点,例如它们的列表端点。
https://picsum.photos/v2/list
貌似目前作者数量有限,你可以去获取,然后将作者数组存储在data
中,然后单独处理搜索。
const [query, setQuery] = useState("");
const [data, setData] = useState([]);
// Add one more state to store the authors being searched for
const [searchResults, setSearchResults] = useState([]);
useEffect(() => {
const fetchData = async () => {
const res = await axios.get(`https://picsum.photos/v2/list`);
setData(res.data);
};
fetchData();
}, []);
// Query that handles searching
useEffect(() => {
setSearchResults(data.filter((authorData) => authorData['author'].toLowerCase().includes(query)));
}, [query, data]);
return (
<div className="app">
<input
className="search"
placeholder="Search..."
onChange={(e) => setQuery(e.target.value.toLowerCase())}
/>
<div>{searchResults}</div>
</div>
);