使用上下文传递全局变量?

时间:2016-04-12 19:15:47

标签: reactjs react-native

我不完全确定我理解上下文但是......

我想知道是否有可能在项目中使用它共享几个变量(颜色,装订线宽度等)?保存多次导入到单个文件中?

如果适当使用上下文,怎么会这样呢?

示例:variables.js

export const primary = 'blue';
export const gutter = 10;

理想情况下,我希望它只是工作所以变量可以在运行中使用

container: {
 paddingHorizontal: gutter,
 backgroundColor: primary
}

这是一个反应原生项目。

1 个答案:

答案 0 :(得分:1)

context的目标实际上是在所有组件之间共享全局数据。但依靠全球数据通常不是一个好主意。如果你的React组件依赖于某些"全局变量"的存在,那么它就会减少自包含,并且更难以重用。

React框架作者自己不鼓励使用context,因为它通常会导致反模式。 context的主要用例不是将全局变量注入组件,而是将它们连接到全局可用的数据源和操作调度程序。 ReduxReact-Redux提供了一个非常漂亮的抽象context,您应该检查这些库。

基本概念是创建自包含的独立组件,除了自己的props之外,不依赖于任何东西 - 然后将它们包装到连接的包装组件中。使用上下文将这些道具连接到共享的应用程序状态和动作创建者。

在这种情况下,每个需要gutter进行渲染的组件都会在其API中公开gutter道具 - 然后您将创建自动获取gutter的连接组件来自共享状态。

有关详细说明,请参阅Redux documentation