我真的很难理解如何删除谷歌gapi事件监听器。下面粗体是所讨论的完整功能。
window.gapi.auth2.getAuthInstance().isSignedIn.listen(onAuthChange);
Run Code Online (Sandbox Code Playgroud)
我想在 useEffect 挂钩中使用清理函数来删除事件侦听器,但执行此操作的实际代码...我认为与简单的 javascript“removeEventListener”不同?我在谷歌文档中找不到任何内容。我的问题是我需要知道其他页面上的身份验证状态何时发生变化,并且需要其他函数在事件触发时运行(身份验证状态更改) - 但由于原始版本不断运行,我最终得到了一堆不必要的函数调用。当您登录和退出时,情况会变得更糟......随着事件侦听器的累积。
import React, { useEffect, useContext, useState } from "react";
import history from "../history";
import { GeneralContext } from "../contexts/General";
const GoogleAuth = () => {
const { state, setState } = useContext(GeneralContext);
const onAuthChange = () => {
const auth = window.gapi.auth2.getAuthInstance();
setState({ authStatus: auth.isSignedIn.get() });
if (auth.isSignedIn.get() === true) {
const token = auth.currentUser.fe.qc.access_token;
setState({ accessToken: token });
}
};
// Check auth status on mount
useEffect(() => {
window.gapi.load("client:auth2", () …Run Code Online (Sandbox Code Playgroud) javascript oauth-2.0 google-api-js-client reactjs google-signin