【问题标题】:Signleton between different components in React NativeReact Native 中不同组件之间的单例
【发布时间】:2018-01-13 05:38:00
【问题描述】:

我希望有一些对象可以从多个组件、同一个对象访问,并且这些组件彼此独立。

看起来 Redux 不是正确的方法,而这个:React native- Best way to create singleton pattern 并没有真正回答这个问题。

还有其他方法吗?

【问题讨论】:

  • 为什么认为 Redux 不是正确的方法?此外,该对象在您的应用程序中是保持不变还是随时间变化?
  • 该对象的状态可能会改变。 Redux 适合这个吗? @DhruvParmar
  • 绝对是的,Redux 为您的整个应用程序提供了一个单一的状态存储。对此存储的任何更改都通过 Actions 触发,并且状态更改在 Reducer 函数中提交。在我看来 Redux 是适合你的方式,因为你可能也想监听这个单例对象的更新?
  • 如果 (a) 您已经在使用 redux 来存储其他状态,或者 (b) 如果您的应用仍然值得引入 redux,则应该考虑使用 redux。后者是一个判断问题。如果您还没有准备好引入 redux,请在容器组件中创建您的共享对象(在这种情况下不是真正的单例),它是所有需要它的组件的最近共同祖先。然后通过 props 将其下推。如果这变得笨拙(因为必须将对象推过许多不使用它的级别),那么这就是开始考虑 redux 的迹象。

标签: reactjs react-native singleton components


【解决方案1】:

好吧,我不确定这是不是正确的方式,但我通常通过模块这样做。

// config.js
export default {
    data1: 'data1',
    data2: 'data2',
    ...
}

// from components

import Config from './config' // You can do this easier with @providesModule
...
config.data1 // you now access & modify common datas like this

【讨论】:

  • 这是一个我还需要配置的复杂对象(Firebase 对象),而不仅仅是字符串。所以你建议为它写一个包装文件?
  • 您也可以像 javascript 一样存储和配置复杂的对象。
  • 每个import是导入同一个对象还是一个副本?我如何知道我正在使用的对象在不同组件中是否相同?
  • 没有副本,或者创建另一个。它只会编译一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 2021-01-06
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 2016-08-06
  • 2017-03-11
相关资源
最近更新 更多