无法在本机

时间:2018-01-10 02:00:29

标签: javascript reactjs react-native global-variables

问题

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

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

var notifNum = 0;
global.n = notifNum;

然后在我的代码中,我用

导入它
import './global.js'

然后我尝试用

更新它
     global.n = notifNum;

Notif num是用户在函数中定义的通知数。问题是global.n保持为0,并且完全没有变化。

如何编辑global.n变量?

2 个答案:

答案 0 :(得分:1)

有一种方法可以修改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

答案 1 :(得分:0)

这与React-Native关系不大,更多与javascript如何作为一种语言有关。

简而言之,您必须PUT _ingest/pipeline/transformFooBar { "processors": [ { "set": { "field": "Bar.Code", "value": "{{_source.Bar}}" } } ] } POST _reindex { "source": { "index": "foo_v1" }, "dest": { "index": "foo_v2", "pipeline": "transformFooBar" } } 您希望在其他文件中使用的内容。

Global.js

export

我们已经告诉JS引擎我们想要在其他文件中导入的内容。将其分配给对象并导出对象并不是必需的,但允许更清洁的导入/导出IMO。

Component.js

let counter = 0;

const increment = () => {
  counter++;
  console.log('counter_updated', counter);
};

const worker = {
  increment,
  counter
};

module.exports = worker;

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

深思熟虑

这不是一个理想的解决方案,因为它不是两种方式。增加import { counter, increment } from 'pathTo/global'; 文件中的计数不会更新global.js中的值。

这是因为React需要更新状态以启动组件的component.js

此外,这不会持续通过应用重新加载,我相信您会想要通知等。

其他解决方案

  1. 将通知计数存储在数据库中。
  2. 使用组件re-render来管理计数。
  3. 使用状态管理器,例如stateRedux