如何在React-native项目的类组件中使用全局变量

问题描述 投票:0回答:1

我正在使用在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 
}

某人有答案怎么了,要记录数据我该怎么办

react-native logging components global
1个回答
0
投票

useEffect属于反应挂钩,并且hooks only works with a functional componentnot with class component

根据文档。

挂钩是React 16.8中的新增功能。它们使您无需编写类即可使用状态和其他React功能。

Link to docs

编辑:挂钩基本上是功能组件中生命周期方法的替代,在16.8之前,我们不能在功能组件挂钩中使用生命周期方法,因此在16.8版本的react中使这成为可能。

现在回到您的问题,如果您正在功能组件中做某件事,并且想要为相同的逻辑做类组件,则必须使用生命周期方法,因为到目前为止,钩子在类组件中不可用。

钩子不能做任何事情,类不能做,反之亦然。

作为您的评论,您已经通过componentWillUpdate实现了相同的目的但是此方法已不推荐使用v17 of react,因此,建议您在组件更新时执行某些操作,则必须使用componentDidUpdate。这是一个钩子如何表示生命周期方法的列表。

https://medium.com/javascript-in-plain-english/lifecycle-methods-substitute-with-react-hooks-b173073052a

© www.soinside.com 2019 - 2024. All rights reserved.