【发布时间】:2020-11-29 09:16:15
【问题描述】:
我知道钩子是类组件的对立面——不要误会我的意思,我只是不知道一行简单的代码如何使这个错误出现,以及我必须在该行中做出什么改变它在类组件中工作。我得到了以下示例,它非常适用于 .jsx 类型的文件和功能组件。
此代码只是在组件之间共享状态的一种简单方式。所以我们得到了文件extendDiv,其中我们有我们的状态和一个简单的函数来改变那个状态;然后我们有一个global 文件,用于获取该状态并将其分发给我们所有的组件:son (filho) 和father (pai)。
在codesandbox example one 中它工作得很好,但是当我做完全相同的事情但使用App.jsx 中的类组件和一些打字稿文件时,它在以下代码中给了我以下错误:
global.isDivExtended = extendDiv();
//Invalid hook call. Hooks can only be called inside of the body of a function component.
您可以在这里查看所有代码并尝试一下:Codesandbox example two
我应该在这里做什么才能使它在类组件中工作?我已经尝试过bind 全局并使用this...非常感谢。
【问题讨论】:
-
你不能像错误所说的那样在类中使用钩子,你需要重写没有钩子的逻辑。
-
嗨。我知道,但是没有办法改变那条线以使其在类组件中工作?这就是我在这里的使命。谢谢。 @DennisVash
-
不,你不能。你需要重写。
-
好的先生,谢谢。但是那条简单的行中的什么类型的东西说这是一个钩子?我找不到任何区别。 @DennisVash
标签: reactjs typescript class react-hooks state