Javascript 组件将安装can';找不到变量

Javascript 组件将安装can';找不到变量,javascript,firebase,react-native,visual-studio-code,google-cloud-firestore,Javascript,Firebase,React Native,Visual Studio Code,Google Cloud Firestore,我已经创建了一个react native CLI项目。现在,每当用户来到我的屏幕时,我都想更新一些值。在我的主屏幕中,我有三个顶部选项卡。当用户单击第三个选项卡时。我每次都需要更新一些值 对于这三个选项卡,我使用的是:ScrollableTabView import ScrollableTabView, { DefaultTabBar } from 'react-native-scrollable-tab-view'; 我每次都使用下面的代码来更新值。但这只是一次: useEffect(()

我已经创建了一个react native CLI项目。现在,每当用户来到我的屏幕时,我都想更新一些值。在我的主屏幕中,我有三个顶部选项卡。当用户单击第三个选项卡时。我每次都需要更新一些值

对于这三个选项卡,我使用的是:
ScrollableTabView

import ScrollableTabView, { DefaultTabBar } from 'react-native-scrollable-tab-view';
我每次都使用下面的代码来更新值。但这只是一次:

useEffect(() => {
  alert('i called');
})
然后我试着:

import React, { useEffect, Component } from 'react';


componentWillMount( () => {
    alert('called ');
})
但是我得到了一个错误,比如变量
组件willmount

我怎样才能解决这个问题?请帮忙


谢谢。

您似乎正在使用新的React Native方式,只使用挂钩和功能组件

不可能再使用reacts生命周期方法了-您必须编写自己的组件willmount代码。看一看文档,或者看一下这个答案:


~laded

您似乎正在使用新的React原生方式,只使用挂钩和功能组件

不可能再使用reacts生命周期方法了-您必须编写自己的组件willmount代码。看一看文档,或者看一下这个答案:


~ladder

那么,回到基本反应。声明组件有两种方式:使用基于类的组件或使用您明确使用的功能组件

在React挂钩之前,我们的功能组件中不能有状态,这意味着您不能从基于类的组件中使用生命周期方法。我真的建议你读这本书。相反,我们可以使用钩子来获得相同的行为

现在,
useffect
hook将接收两个参数:第一个是我们将要执行的回调,第二个是将触发该hook的依赖项数组。这意味着钩子将监视数组中变量的变化。由于您没有声明依赖项数组,因此钩子将在每个渲染上执行

那么,到底是什么问题?问题是使用
react native scrollable tab view
声明选项卡不会卸载每个选项卡的组件,没有任何变化,这是因为警报日志只记录一次。因为不再有渲染,只有一次


查看文档,您可能正在使用
onChangeTab
方法,在更改选项卡时显然会调用该方法

那么,回到反应基础。声明组件有两种方式:使用基于类的组件或使用您明确使用的功能组件

在React挂钩之前,我们的功能组件中不能有状态,这意味着您不能从基于类的组件中使用生命周期方法。我真的建议你读这本书。相反,我们可以使用钩子来获得相同的行为

现在,
useffect
hook将接收两个参数:第一个是我们将要执行的回调,第二个是将触发该hook的依赖项数组。这意味着钩子将监视数组中变量的变化。由于您没有声明依赖项数组,因此钩子将在每个渲染上执行

那么,到底是什么问题?问题是使用
react native scrollable tab view
声明选项卡不会卸载每个选项卡的组件,没有任何变化,这是因为警报日志只记录一次。因为不再有渲染,只有一次


查看文档,您可能正在使用
onChangeTab
方法,在更改选项卡时显然会调用该方法

当我进入屏幕时,是否有其他方法每次调用some函数。我听说Didmount将调用一次组件。组件willmount将调用两次。但是,每次进入屏幕时,是否还有其他替代方法可供选择?如果使用较旧的语法,则可以使用所有生命周期函数。。查看文档以了解它们的功能,然后如果您知道需要什么,可以查看如何将其创建为钩子。例如,componentWillMount有助于获得设备宽度或类似值。ComponentDidMount适用于填充屏幕的API调用。当我进入屏幕时,是否有其他方法每次调用some函数。我听说Didmount将调用一次组件。组件willmount将调用两次。但是,每次进入屏幕时,是否还有其他替代方法可供选择?如果使用较旧的语法,则可以使用所有生命周期函数。。查看文档以了解它们的功能,然后如果您知道需要什么,可以查看如何将其创建为钩子。例如,componentWillMount有助于获得设备宽度或类似值。ComponentDidMount适用于填充屏幕的API调用。