由 async/await 引起的 TypeError: destroy 不是 useEffect 中的函数

use*_*363 4 reactjs react-native

我的 React Native捆绑(0.61.5)了一个16.9.0React,但它不是最新的。在应用程序中useEffect返回错误TypeError: distroy is not a function

在此输入图像描述

这是useEffect代码:

useEffect(async () => {
    try {
      let url = `${GLOBAL.BASE_URL}/api/events/active?group_id=${encodeURIComponent(group_id)}&_role=${role}&_grpmember_id=${grpmember_id}&_group_id=${encodeURIComponent(group_id)}&_device_id=${encodeURIComponent(device_id)}`;
      let res =  await fetch(url, {
        method: "GET",
          headers: {
          'Accept': 'application/json, text/plain',
          'Content-Type': 'application/json',   
          "x-auth-token": token.password,
          "x-auth-secret": token.username,
        }
      });
      //check secret token 
      let secret = res.headers.get("x-auth-secret");
      let jwttoken = res.headers.get("x-auth-token");
      res = await res.json();
      if (secret && jwttoken && (typeof secret !== 'undefined') && (typeof jwttoken !== 'undefined') && secret !== null && jwttoken !== null) {
        if(await helper.updateJwtToken(secret, jwttoken)) {
          setToken({password: jwttoken, username: secret});
          authVal.updateToken(token); //set state token in App.js
        };
      } else if (jwttoken === "route to verfi") {
        navigation.navigate("Verif1", {cell: res.cell, cell_country_code: res.cell_country_code, existing_user:true});      
      };
      //update state
      var ordered_data = eventsByDate(res);
      setActiveEvents(ordered_data);

    } catch (err) {
      console.log("Error in event refreshing data ", err);     
    };
  })
Run Code Online (Sandbox Code Playgroud)

根据网上的帖子async/await,该问题很可能是由方法中的几个问题引起的。在我看来,最新版本React应该可以解决这个问题。我应该升级到什么版本的react?或者有其他解决方案来解决此问题而不是版本升级。

ulu*_*ulu 5

我认为你应该删除 async 关键字并只写useEffect(() => {...});最好的方法是创建一个单独的函数并使用它:

const doStuff = async () => {...};
useEffect(() => { doStuff(); });
Run Code Online (Sandbox Code Playgroud)