就像标题说的useFetch自定义钩子,我做了两次返回数据,我的意思是什么。当我console.log我获取的数据有两个输出,其中一个是空值,另一个是我想要的数据,因为有空值的数据,这是一个问题,因为我不能实现包含我想要的数据的表。下面是代码:
import { useState, useEffect } from "react";
import axios from "axios";
const useFetch = (url) => {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
useEffect(() => {
setLoading(true);
axios
.get(url)
.then((response) => {
setData(response.data);
})
.catch((err) => {
setError(err);
})
.finally(() => {
setLoading(false);
});
}, [url]);
return { data, loading, error };
};
export default useFetch;
这就是我想使用我获取的数据的地方:
import React from "react";
import Table from "@mui/material/Table";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableHead from "@mui/material/TableHead";
import TableRow from "@mui/material/TableRow";
import useFetch from "./custom_hooks/useFetch";
const TableComponent = () => {
const { data, loading, error } = useFetch(
"https://gorest.co.in/public/v1/users?page=1"
);
if (loading) return <h1> LOADING...</h1>;
if (error) console.log(error);
console.log(data);
return (
<TableContainer>
<Table>
<TableHead>
<TableRow>
<TableCell>User Names</TableCell>
<TableCell align="right">Email</TableCell>
<TableCell align="right">Status</TableCell>
<TableCell align="right">Gender</TableCell>
<TableCell align="right">ID</TableCell>
</TableRow>
</TableHead>
<TableBody>
{data.data.map((user) => {
return (
<TableRow>
<TableCell>{user.name}</TableCell>
</TableRow>
);
})}
</TableBody>
</Table>
</TableContainer>
);
};
export default TableComponent;
当我刷新页面时,有一个错误“数据为空”,如何修复?
你的钩子不能很好地管理它的内部状态。例如,如果读取错误,它永远不会取消错误。)此外,如果您更改了URL,钩子可能会因为先前的效果先完成而导致错误URL的数据。
因此,最好只查看您是否有数据,而不要相信其他标志是正确的:
const { data, loading, error } = useFetch("https://gorest.co.in/public/v1/users?page=1");
if(error) return <>Error: {String(error)}</>;
if(!data) return <h1>LOADING...</h1>;
除此之外,您可能还想查看一个为您正确执行状态管理、缓存等操作的库;在撰写本文时,我建议swr
或react query
。。。
我目前正在尝试创建一个钩子,跟踪给定组件中所有子组件上的道具(当一个子组件切换时,其他子组件取消切换) 我这样做的方式是: 通过创建与子节点长度相同的假值列表来设置初始状态 将此状态映射到每个子的prop 声明并返回操作初始列表状态的切换函数 当我调用toggle时,会出现以下错误: 警告:来自useState()和useReucer()钩子的状态更新不支持第二个回调参数。若要在呈现后执行副作用,
TL;DR:如何选择一个WP REST API自定义endpoint的响应的每一点信息? 长版 如果我想使用WP REST API构建自定义endpoint - 从不同的帖子类型发送特定帖子数据 - 按照手册中的示例,我得到了这个: 但是get_post()函数没有返回一些数据,如果您希望在页面中显示帖子,这些数据是非常有用的(例如类别id、特色图片)。那么,我如何构建一个自定义endpoint来
本文向大家介绍django rest framework 自定义返回方式,包括了django rest framework 自定义返回方式的使用技巧和注意事项,需要的朋友参考一下 大家在用Django Rest Framework的时候会发现默认继承后,增删改查的返回信息都是一段data,这是因为我实际是状态码和信息你在调用api的时候是看不到的,仅仅如此么?并不是这样,在我前端调用后端的时候,实
这是“Eloquent JavaScript”书中的一个例子(我想你知道这本书): 代码做什么并不重要。 问题是:据我所知,函数有两个不同的'body',即它做完全不同的事情。在第一个实例中,它做了很多逻辑,但第二次它,首先,有一个不同的第二个参数(而不是,其次,它只是将一个数组元素属性(即39人数组中一个人的死亡日期)除以100。 为什么同一个函数做不同的事情?我确实理解 同一个函数的这两个实例
我有一个组件,我在其中调用我的自定义钩子。 自定义钩子如下所示: 而我在其中使用的导致错误的组件是: 有什么想法吗?
和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。 有两组这样的钩子:客户端的和服务器端的。 客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。 你可以随心所欲地运用这些钩子。 安装一个钩子 钩子都被存储在 Git 目录下的 hooks 子目录中。 也即绝大部分项目中的 .git/hooks 。 当你用 git init 初始