我不完全确定我理解上下文但是......
我想知道是否有可能在项目中使用它共享几个变量(颜色,装订线宽度等)?保存多次导入到单个文件中?
如果适当使用上下文,怎么会这样呢?
示例:variables.js
export const primary = 'blue';
export const gutter = 10;
理想情况下,我希望它只是工作所以变量可以在运行中使用
container: {
paddingHorizontal: gutter,
backgroundColor: primary
}
这是一个反应原生项目。
答案 0 :(得分:1)
context
的目标实际上是在所有组件之间共享全局数据。但依靠全球数据通常不是一个好主意。如果你的React组件依赖于某些"全局变量"的存在,那么它就会减少自包含,并且更难以重用。
React框架作者自己不鼓励使用context
,因为它通常会导致反模式。 context
的主要用例不是将全局变量注入组件,而是将它们连接到全局可用的数据源和操作调度程序。 Redux
和React-Redux
提供了一个非常漂亮的抽象context
,您应该检查这些库。
基本概念是创建自包含的独立组件,除了自己的props
之外,不依赖于任何东西 - 然后将它们包装到连接的包装组件中。使用上下文将这些道具连接到共享的应用程序状态和动作创建者。
在这种情况下,每个需要gutter
进行渲染的组件都会在其API中公开gutter
道具 - 然后您将创建自动获取gutter
的连接组件来自共享状态。
有关详细说明,请参阅Redux documentation。