【发布时间】:2020-11-03 14:26:43
【问题描述】:
版本A:useEffect(() => doRequest(), []);
版本B:
useEffect(() => {
doRequest();
}, []);
我一直认为两个版本完全相同,其中 VersionA 是快捷方式,而 VersionB 允许您在内联函数中执行多个命令。
但是,当我使用 VersionA 时,我正在点击 TypeError: func.apply is not a function,由 NextJS 抛出
如果我使用 VersionB 的语法,一切正常。想知道以前是否有人遇到过这种情况?
更新 我的组件的完整代码
import { useEffect } from 'react';
import useRequest from '../../hooks/use-request';
import Router from 'next/router';
export default () => {
const { doRequest } = useRequest({
url: '/api/users/signout',
method: 'post',
body: {},
onSuccess: () => Router.push('/'),
});
useEffect(() => doRequest(), []);
return <div>Signing you out...</div>;
};
【问题讨论】:
-
我们可以要你的组件代码吗?
-
这似乎是一个 NextJS 问题,这两种方法虽然语义不同,但不会在 React 中抛出错误。 NextJS 似乎希望您始终在
useEffect中返回一个函数 -
@ethane 你是怎么得出这个结论的? NextJS 不会篡改
useEffect所做的事情。
标签: javascript reactjs react-hooks next.js