上下文:我们有一个主题上下文提供程序,它将一个主题传递给我们所有的孩子。这个主题是根据设备的尺寸计算的。我们可以在任何组件上使用useTheme
钩子轻松地从这个主题中提取值。
此外,我们还有一个常量文件,可以在其中生成主题并导出上述值。
所以在我们的React代码库中,我们有两种方法来获取主题属性。要么使用useTheme
钩子,要么从常量文件导入常量。
我假设使用常量会提高计算效率,因为react钩子是特殊的函数(有其特殊的规则),它们肯定会有一些开销。有人能澄清哪种方法更好吗?react钩子总体上增加了哪些开销?
1条答案
按热度按时间ql3eal8s1#
您的用例描述确实与
useContext
挂钩匹配。使用该常数将在计算上高效,因为React钩子是特殊函数(具有它们的特殊规则),并且它们必定有一些开销。
虽然React钩子确实涉及一些开销,但通常可以忽略不计。
如上所述,您的用例非常常见,它甚至与React样式库的情况相匹配,如您的标签中提到的
styled-components
:许多应用程序都使用它们,有些很可能安装了数千个组件,而且它们仍然毫无问题地使用它们。哪种方法更好
一如既往,没有确定的“更好”,只有更好地匹配某些情况和要求。
如果你确信你的项目只使用你的常量文件,并且你的组件永远不会在另一个地方使用另一个上下文(不同的主题),那么直接导入文件就可以了。
useContext
是控制模式的反转形式:你不再直接导入依赖项(你的主题),它是框架提供的。这样,你可以很容易地交换它,无论是由于项目的变化,或在运行时,或取决于你在应用程序中的位置:您将获得额外级别的灵活性。