【发布时间】:2022-01-20 14:04:36
【问题描述】:
我有一个页面,我根据 id 显示来自 API 的数据。我正在使用 React Query 来管理数据的存储。我想要做的是,当带有 id 的输入发生变化时,我想重新获取不同对象的数据。我尝试执行以下操作:
const useData = (id: string) => useQuery(
['data', id],
() => axios.get(`/api/data/${id}`),
{
enabled: !!id,
},
);
const Page = () => {
const [id, setID] = useState('1');
const [result, setResult] = useState(useData(id));
useEffect(() => {
setResult(useData(id));
}, [id]);
return (
<div>
{result.data}
<input onChange={(e) => setID(e.target.value)} />
</div>
);
};
但是你不能在 useEffect 回调中调用钩子。使用新 API 调用中的数据重置 result 的正确方法是什么?
【问题讨论】:
-
你为什么要把
useData作为useState的初始值?似乎useState是不必要的并导致问题
标签: reactjs react-hooks react-query