如何解决TypeError:func.apply不是函数
我正试图使用useEffect函数:
origin/13.0
但是当我尝试使用 const [data,setData] = useState({ courses: [] });
useEffect(async () => {
const result = await axios.get(
"http://example.com/api/v1/categories/"
);
await setData(result.data);
},[]);
console.log(data);
return (
<div>
<div>{data.info1}</div>
<div>{data.info2}</div>
<div>{data.info3}</div>
<div>{data.info4}</div>
</div>
);
变量时,有时会抛出此错误:
data
我不知道,我想念哪里。
解决方法
您只能将普通函数作为参数传递给useEffect ,而不能传递异步函数。为了在useEffect中使用异步等待,您可以将函数编写为IIFE(立即调用函数表达式-您编写函数并立即调用它)。
const [data,setData] = useState({ courses: [] });
useEffect(() => {
(async () => {
const result = await axios.get(
"http://example.com/api/v1/categories/"
);
setData(result.data);
})();
},[]);
console.log(data);
return (
<div>
<div>{data.info1}</div>
<div>{data.info2}</div>
<div>{data.info3}</div>
<div>{data.info4}</div>
</div>
);
或者您可以只创建一个普通的名为async的函数,然后按如下所示调用它,
const [data,setData] = useState({ courses: [] });
useEffect(() => {
const getResult = async () => {
const result = await axios.get(
"http://example.com/api/v1/categories/"
);
setData(result.data);
};
getResult();
},[]);
.
.
.
,
这表明您从useEffect返回的值不是函数。 查看您共享的代码,您正在大量使用带有useEffect的异步功能,这不受支持,并且会触发此错误。
您能提供更多代码吗,我能理解您想要做什么!
,您可以单独编写一个异步函数,然后从内部调用
,请不要在useEffect中使用异步等待,{}和[]。为我解决
useEffect(() => {
props.actions.something();
},[])
如果已使用
useEffect(async () =>
await props.actions.something();
)
,
删除 useEffect 中的 return 关键字解决我的问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。