我有一个选择选项菜单。因此,当用户选择一个选项时,我希望发送一个GET请求到服务器,并从服务器接收过滤后的数据。
可以使用useEffect(() => {// 发送请求}, [criteria])实现这一点
因为,useEffect确保只有在setCriteria完成后才会将请求发送到服务器。
但是,我正在使用react-query
库。所以,不允许在useEffect
内部使用useQuery
。
因此,请求在setState完成之前就发送到服务器了。 因此,服务器获取的是先前选择的值,而不是当前选择的值。
onChange:
<select
name="filter"
value={criteria}
onChange={async (e) => {
setCriteria(e.target.value);
}}
>
<option>Most recent First</option>
<option>Price: Low to High</option>
<option>Price: High to Low</option>
</select>;
获取帖子:
const FetchPosts = async () => {
const {
data: { posts },
} = await axios.get(`${process.env.API_URL}/api/posts`, {
params: {
filter: criteria,
},
});
return posts;
};
useQuery("posts", FetchPosts);
const posts = queryCache.getQueryData("posts");
useQuery("thisIsAStaticKey", doSomething());
- IamButtman