Javascript Can';t在react native中修改全局变量 问题

Javascript Can';t在react native中修改全局变量 问题,javascript,reactjs,react-native,global-variables,Javascript,Reactjs,React Native,Global Variables,我希望在react native中有一个全局计数器,以显示用户在我正在创建的应用程序中有多少通知 我在一个名为global.js的文件中创建了一个全局变量: var notifNum = 0; global.n = notifNum; 然后在我的代码中,我使用 import './global.js' 然后稍后我尝试用 global.n = notifNum; Notif num是用户在函数中定义的通知数。问题是global.n保持为0,并且根本不改变 如何编辑global.n变

我希望在react native中有一个全局计数器,以显示用户在我正在创建的应用程序中有多少通知

我在一个名为global.js的文件中创建了一个全局变量:

var notifNum = 0;
global.n = notifNum;
然后在我的代码中,我使用

import './global.js'
然后稍后我尝试用

     global.n = notifNum;
Notif num是用户在函数中定义的通知数。问题是
global.n
保持为0,并且根本不改变


如何编辑global.n变量?

这与React Native关系不大,与javascript作为一种语言的工作方式关系更大

简而言之,您必须导出希望在其他文件中使用的内容

Global.js 我们已经告诉JS引擎我们想要在其他文件中导入什么。将其分配给和对象并导出对象不是必需的,但允许更干净的导入/导出

Component.js 我们解构导出的对象,现在可以修改/使用global.js文件中的值

耐人寻味 这不是一个理想的解决方案,因为它不是两种方式。增加
global.js
文件中的计数不会更新
component.js
中的值

这是因为React需要更新其状态,以启动组件的重新渲染

此外,这不会通过应用程序重新加载而持久,我相信您可能希望使用诸如通知之类的东西

其他解决方案
  • 将通知计数存储在数据库中
  • 使用组件
    状态
    管理计数
  • 使用状态管理器,如
    Redux
    MobX

  • 有一种方法可以修改global.foo变量

    不工作

    global.foo = 'foo'; //this cant be changed
    global.foo = 'foofoo';
    console.log(global.foo); //foo
    
    行得通

    global.foo = ['foo']; //this can be changed
    global.foo[0] = 'foofoo';
    console.log(global.foo[0]); //foofoo
    

    如何使用增量和计数器?工人增薪;给我一个错误,说找不到变量worker。因为我们在导入时从
    worker
    对象解构了属性,所以不需要使用
    worker.counter
    引用它。相反,我们可以这样使用,
    increment()
    counter
    我知道这个问题很久以前就被问过了,但我在使用计数器时遇到了问题。它将把.log()控制台设置为1,但当我实际尝试使用它时,它是0。同样,创建返回计数器的函数也不起作用。请尝试将
    计数器+++
    更改为
    计数器+1
    @Giise你确定这会达到预期的结果吗?是的,global.foo被分配了一个数组,你不能改变它,但你可以改变数组中的内容array@Torped这句话说得太好了
    global.foo = 'foo'; //this cant be changed
    global.foo = 'foofoo';
    console.log(global.foo); //foo
    
    global.foo = ['foo']; //this can be changed
    global.foo[0] = 'foofoo';
    console.log(global.foo[0]); //foofoo