【发布时间】:2021-12-06 14:22:57
【问题描述】:
我正在尝试使用 setState 设置状态,它需要默认为来自 React-query 的数据,但刷新时显示 undefined。
const fetchAlerts = async () => {
const res = await fetch('https://jsonplaceholder.typicode.com/todos');
return res.json();
};
const { data, status } = useQuery('todos', fetchTodos, {
staleTime: 5000,
});
const result = data;
const [fetchData, setFetchData] = React.useState<ITodo[]>(result);
然后我像这样映射状态对象:
{fetchData.map() etc}
【问题讨论】:
-
“你为什么需要这样做”是我的反问? react-query 的每次后台重新获取都会使用 useEffect 解决方案覆盖本地状态,那么为什么不直接使用 useQuery 中的数据呢?我认为没有理由像那样同步状态……
-
我有过滤按钮,我通过更新状态和显示结果来过滤数组
-
所以我的反问是,如果不使用状态,我将如何做到这一点?
-
例如,您可以只存储过滤条件(用户选择的),然后在渲染函数中执行过滤。如果贵,可以申请
useMemo。但是存储派生状态很少是解决方案,因为您创建了两个事实来源。 -
“过滤列表”甚至是 react-docs 中的示例之一,用于表示非状态:reactjs.org/docs/…
标签: javascript reactjs typescript react-query