从静态函数

时间:2017-07-04 11:45:11

标签: react-native redux

我有一个React Native应用程序,其中有一个名为Helpers的类。这些是一组与应用程序相关的静态辅助函数。我称之为Helpers.functionName()。从静态方法到达redux存储的最佳方法是什么?我想修改它并阅读它。

我有这样的助手:

class Helpers extends Component {
  static getState(){
    return state;
  }
}

我尝试使用connect,但在getState函数中,this.props是未定义的。

2 个答案:

答案 0 :(得分:2)

一种方法是将store作为参数传递给需要它的每个静态函数。或者你可以创建商店全局变量并访问它。

我会毫不犹豫地将这些方式描述为最佳,或者使用任何其他积极的形容词。 Redux可以在很多方面使用,但我认为打算将商店访问视为全球性的。

另请注意,直接从帮助程序功能更改商店是另一个禁忌级别。 redux的意图是只有reducer函数才会响应调度的操作而改变状态。

最后,Helpers真的是你正在使用的组件,还是只是一堆静态函数的容器?如果以后,从组件派生它可能会产生误导。

答案 1 :(得分:1)

如果您使用了Provider组件,那么您可以使用React提供的context API访问redux商店(以及商店的状态)。

为了公开上下文,您必须在contextTypes组件中定义Helpers

static contextTypes = {
  store: PropTypes.object
}

之后,在您的组件中,您可以从this.context

中读取商店