我正在使用在app.tsx
中声明为functional component
的全局变量,例如
const App = () => {
useEffect(r => global.some = 'anything')
}
我正在其他functional component
中使用此全局变量,非常像这样
const SomeComponent = () => {
useEffect(r => console.log(some)) //annything
}
但是当我在class component
中使用它时,我给了我一个叫做unexpected token
的错误
like
class NewClass extends React.Component {
useEffect(r => console.log(some) //error : unexpected token
}
某人有答案怎么了,要记录数据我该怎么办
useEffect
属于反应挂钩,并且hooks only works with a functional component
,not with class component
。
根据文档。
挂钩是React 16.8中的新增功能。它们使您无需编写类即可使用状态和其他React功能。
编辑:挂钩基本上是功能组件中生命周期方法的替代,在16.8
之前,我们不能在功能组件挂钩中使用生命周期方法,因此在16.8
版本的react中使这成为可能。
现在回到您的问题,如果您正在功能组件中做某件事,并且想要为相同的逻辑做类组件,则必须使用生命周期方法,因为到目前为止,钩子在类组件中不可用。
钩子不能做任何事情,类不能做,反之亦然。
作为您的评论,您已经通过componentWillUpdate实现了相同的目的但是此方法已不推荐使用v17 of react
,因此,建议您在组件更新时执行某些操作,则必须使用componentDidUpdate。这是一个钩子如何表示生命周期方法的列表。