- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编辑正在展示
Type 'Promise' is not assignable to type 'void | Destructor'.
用于 useEffect 中的 checkUserLoggedIn() 调用。
我可以通过执行 const checkUserLoggedIn:any 来摆脱它
然而,也许这不是解决这个问题的最理想方法......
如果我执行 const checkUserLoggedIn:Promise然后我得到一个不同的错误:
This expression is not callable. Type 'Promise' has no callsignatures.
这不是我想要的...我希望它是可调用的...我正在将我的 javascript 文件翻译/转换为 typescript ......
useEffect(() => checkUserLoggedIn(), [])
// Check if user is logged in
const checkUserLoggedIn = async () => {
console.log('checkUserLoggedIn')
const res = await fetch(`${NEXT_URL}/api/user`)
const data = await res.json()
if (res.ok) {
setUser(data.user)
console.log('data.user', data.user)
router.push('/account/dashboard')
} else {
setUser(null)
}
}
最佳答案
以您描述的方式编写的箭头函数隐式返回函数的值。例如,此函数 () => 4
返回值 4
。相反,当您将其包装在一个 block 中时,您必须显式定义返回值:() => { 4;
这个函数不返回任何东西。
在您的情况下,您正在传递一个匿名箭头函数,该函数隐式返回异步函数的结果,这是一个 promise 。
要解决此问题,请将传递给 useEffect
的函数的内容包装在一个 block 中:
useEffect(() => {
checkUserLoggedIn();
}, []);
关于javascript - typescript :类型 'Promise<void>' 不可分配给类型 'void | Destructor',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72234152/
例如,下面是否泄漏? Foo ( ) { std:map myMap; myMap[std::string("Bar")] = 2983; } 我相信它不会泄漏,但找不到关于这一点的具体文
有没有办法在类析构函数之前调用字段析构函数? 假设我有 2 个类 Small 和 Big,Big 包含一个 Small 的实例作为它的字段因此: class Small { public: ~
阅读 Herb Sutter,我可以看到这一点: Guideline #4: A base class destructor should be either public and >virtual,
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 4 年前。 Improve
我只有 1 行代码,这是: pcrecpp::RE re("abc"); 在函数内部 OnBnClickedButtonGo() .这个函数在Release模式下会失败,但是在debug模式下可以正常
我最近参加了一个采访,那个人问我什么是 build 和破坏的顺序。我解释说, build 是从一个基地到另一个 child ,从一个 child 到另一个基地的破坏。 采访者很想知道从派生到基地发生破
如果我在 vector 中动态分配一个类的对象,如果我使用 clear() 是否会调用每个对象的析构函数? 最佳答案 “动态分配”到底是什么意思?如果您使用 vector那你很好。如果您通过 vect
我正在尝试使用手动内存管理来管理昂贵对象的生命周期,在我的单元测试期间,我的程序似乎因 destroy(bar) 下的主要方法中的访问冲突而崩溃在这个例子中。这是我遇到访问冲突问题的最小示例。 我不明
我只是创建一个简单的列表,然后销毁它。出了点问题,我总是收到这个恼人的错误消息: Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) 代码如下: #i
class TsDatabasePool { private: TsDatabasePool(int numDBConn, std::string& DBName, std::string&
在一个项目中,我遇到了以下问题: 我有一个非常简单的继承方案(我需要继承而不是组合): 类基础 ->类DerivedA ->类DerivedB ->类DerivedC A、B 和 C 派生自 Base
我试图在我创建的矩阵类上对 + 和 = 运算符使用运算符重载。要么是构造函数或析构函数导致了问题,要么都不是(尽管我将它们中的每一个都变灰了,并且代码似乎可以工作)。有人可以帮我理解是什么导致了这种奇
我正在用 SDL 编写基于图 block 的 map ,Map 类的构造函数用于设置用于表示包含的每个 MapCell 对象的图像在里面。但是,我的 Sprite 类的析构函数有问题,该类用于释放对象
这个问题在这里已经有了答案: What destructors are run when the constructor throws an exception? (3 个答案) 关闭 8 年前。
我在 Ubuntu Trusty 上使用 C++11 和 g++4.8。 考虑这个片段 class Parent { public: virtual ~Parent() = default;
我在我们的一个客户环境中遇到问题 - 当我在 OnAppExit(或析构函数)中使用 AfxGetApp()->WriteProfileString 时它不起作用。我无法在任何地方复制它。我追踪到 O
C# Language Specification 3.0 的第 10.13 节,析构函数声明如下: Destructors are not inherited. Thus, a class has
我正在试验专门的析构函数。这段代码完全有效并且编译得很好: #include using namespace std; template class Cat { public: ~Cat(
所以我正在尝试制作一个递归链表。它看起来有点像这样: class List { int cur; //For now List* nxt; public: List()
我的代码如下: class TimeManager { public: virtual ~TimeManager(); }; class UserManager : virtual public T
我是一名优秀的程序员,十分优秀!