首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字体不应用于样式,除非在React本机中重新加载

字体不应用于样式,除非在React本机中重新加载
EN

Stack Overflow用户
提问于 2020-07-03 07:14:35
回答 2查看 313关注 0票数 0

我正在使用global对象来存储字体名称(所以稍后我可以更改所有字体),但是,除非我保存组件(并触发热重加载),否则它们不会应用。经过实验,我发现global在开始时不存储值,所以热重新加载必须重新分配值给关闭的全局变量。

代码:

App.jsx

代码语言:javascript
复制
...
global.fontRegular = 'Montserrat-Regular';
global.fontSemiBold = 'Montserrat-SemiBold';
global.fontExtraBold = 'Montserrat-ExtraBold';
...

HeaderTitle.jsx

代码语言:javascript
复制
import React from 'react';
import {Text, TouchableOpacity, StyleSheet} from 'react-native';

const styles = StyleSheet.create({
  text: {
    fontSize: 24,
    color: '#f1f1f1',
    textAlign: 'center',
    fontFamily: global.fontExtraBold,
    margin: 10,
  },
});

export default function () {
  return (
    <TouchableOpacity>
      <Text style={styles.text}>SUPPORT.UA</Text>
    </TouchableOpacity>
  );
}

热重装前筛

热装后筛

EN

回答 2

Stack Overflow用户

发布于 2020-07-03 07:14:35

我发现,如果没有在导出体中使用global对象,则对封闭对象不起作用,所以原始代码将不工作

但是,下面的一个(现在我想知道这是如何工作的):

代码语言:javascript
复制
import React from 'react';
import {Text, TouchableOpacity, StyleSheet} from 'react-native';

export default React.memo(function ({navigation, ...props}) {
  const styles = StyleSheet.create({
    text: {
      fontSize: 24,
      color: '#f1f1f1',
      textAlign: 'center',
      fontFamily: global.fontExtraBold,
      margin: 10,
    },
  });
  return (
    <TouchableOpacity onPress={() => navigation.navigate('MainScreen')}>
      <Text style={styles.text}>SUPPORT.UA</Text>
    </TouchableOpacity>
  );
});
票数 0
EN

Stack Overflow用户

发布于 2020-07-03 11:06:04

您的const styles对象是在函数块之外声明的,因此在app启动时立即对其进行评估( global.yourFont尚未分配)。然而,分配给global是一种操作,是在对整个代码进行爬行和非作用域const的计算之后完成的。因此,将其移动到组件内部就可以解决问题,因为组件函数将在初始爬行之后被调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62710284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档