reactjs - TypeError:destroy is not a function in useEffect 由 async/await 引起
问题描述
我的 React Native捆绑(0.61.5)
了一个16.9.0
React,它不是最新的。在应用程序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);
};
})
根据在线帖子,问题很可能是由async/await
方法中的几个引起的。在我看来,更新的版本React
应该可以解决这个问题。我应该升级到什么版本的反应?或者有其他解决方法而不是版本升级。
解决方案
我认为你应该删除 async 关键字并只写useEffect(() => {...});
最好的方法是创建一个单独的函数并使用它:
const doStuff = async () => {...};
useEffect(() => { doStuff(); });
推荐阅读
- windows - 如何在 ZeroBrane Studio 中使用 IUP 包运行 LUA 项目?
- javascript - 如何在 webpack 或 gulp 中观察对函数的构建时间调用?
- sql - SQL GROUP BY 和之后的重新减少
- c++ - 是否可以仅在需要时缩小?
- angular-material - 如何使用带有阴影 dom 封装的角度材质组件
- node.js - AWS Elasticsearch 使用凭证通过 nodejs 访问
- c# - ASP.NET Core 标识 - 更新时用户名已存在
- python - 使用可迭代 Python 对象实现类似 str.strip() 的行为的方法
- docker - 如何在主机服务器上将 Zeppelin 映像与 cassandra 连接起来
- java - 源根 intelliJ 之外的 Java 文件