【发布时间】:2021-11-11 03:47:32
【问题描述】:
我有一个 NextJS 项目,使用 NextJS 路由器根据某个状态变量将用户路由到页面。
我查找了如何使用 NextJS router documents 执行我想要的操作,其中包含以下示例:
const useUser = () => ({ user: null, loading: false })
export default function Page() {
const { user, loading } = useUser()
const router = useRouter()
useEffect(() => {
if (!(user || loading)) {
router.push('/login')
}
}, [user, loading])
return <p>Redirecting...</p>
}
当我将该示例粘贴到我的代码中时,ESLint 对我没有将路由器作为依赖项包含在内感到不高兴 - 显示以下消息:
React Hook useEffect has a missing dependency: 'router'. Either include it or remove the dependency array.eslintreact-hooks/exhaustive-deps
消息是有道理的——我们在效果中使用了 useRouter 挂钩,但没有将它添加到效果的依赖数组中。
但是,将它添加到依赖数组自然会导致无限的重新渲染循环(因为我使用的是动态路由,因此由于路由器正在更改,因此会一遍又一遍地调用相同的效果)。
我应该忽略 ESLint 的警告,还是应该一起做一些不同的事情?
编辑:值得注意的是我使用的是NextJS ESlint config
【问题讨论】:
-
该问题的讨论是here。虽然我没有找到具体的解决方案。
标签: reactjs next.js use-effect