首页 > 解决方案 > 使用 setInterval 调用一个 react 组件函数

问题描述

我创建了一个名为 IsLoggedIn 的函数,它使用带有 axios.get 的 useEffect 挂钩来查询服务器以获取用户的 cookie 会话时间。我想使用 setInterval 函数调用 IsLoggedIn,如下所示:

setInterval(<IsLoggedIn></IsLoggedIn>, 2000) //--> This is in app.js

但是,我收到一个错误:

    Uncaught SyntaxError: Unexpected identifier
    setInterval (async)
eval @ App.js:92
./src/App.js @ bundle.js:75202
__webpack_require__ @ bundle.js:790
fn @ bundle.js:101
eval @ index.js:6
./src/index.js @ bundle.js:75272
__webpack_require__ @ bundle.js:790
fn @ bundle.js:101
eval @ client:3
1 @ bundle.js:75389
__webpack_require__ @ bundle.js:790
(anonymous) @ bundle.js:857
(anonymous) @ bundle.js:860

如果有人对为什么会发生这种情况有任何想法,请告诉我。谢谢!

标签: javascriptreactjssetinterval

解决方案


有几件事情需要解决:

我创建了一个名为 IsLoggedIn 的函数,它使用了一个 useEffect 钩子

假设您已经创建了一个自定义钩子,则不应将其用作组件(),正确的方法是:

const bla = useLoggedIn(); // custom hooks are also prefixed with 'use'

我想使用 setInterval 函数调用 IsLoggedIn

钩子只能在函数组件的主体内部调用,所以最好将其移到setIntervaluseEffect定义钩子的内部。


推荐阅读