用一种字体包装整个 React Native 应用程序

Wrap Entire React Native App With One Font

我正在寻找一种简单的方法来用一种字体包装我的整个 React 本机应用程序,但我找不到有关执行此操作的最佳方法的文档。

有没有人有任何建议或参考我可以通读?大多数情况下,我正在阅读的是我需要制作一个新的文本文件,然后为每个文本元素导入字体,这不是我想要做的。

我已经通读过的参考资料: https://medium.com/@fasterpancakes/react-native-row-how-to-wrap-components-and-avoid-stylesheets-99406e068357 https://reactnative.dev/docs/text https://ospfolio.com/two-way-to-change-default-font-family-in-react-native/

我想做这样的事情:

import {useFonts} from "@use-expo/font";
import {AppLoading} from "expo";
...
const App = createAppContainer(switchNavigator);

export default () => {
  const [fontsLoaded] = useFonts({
    "Raleway-Bold": require("./assets/fonts/Raleway-Bold.ttf"),
    "Raleway-Medium": require("./assets/fonts/Raleway-Medium.ttf"),
    "Raleway-Regular": require("./assets/fonts/Raleway-Regular.ttf"),
  });

  if (!fontsLoaded) {
    return <AppLoading />;
  }

  return (
    <AuthProvider>
      <App
        ref={(navigator) => {
          setNavigator(navigator);
        }}
        style={{fontFamily: "Raleway-Bold"}}
      />
    </AuthProvider>
  );
};

你能不能只用你需要的所有默认样式制作一个自定义组件,然后在任何地方使用它而不是 <Text>

// DefaultText.jsx

import React from "react";
import { StyleSheet } from "react-native";

const DefaultText = props => <Text style={styles.defaultText}>{props.children}</Text>;

const styles = StyleSheet.create({
  defaultText: {
    fontFamily: "Raleway-Bold",
  },
});

export default DefaultText;

// SomeComponent.jsx

import React from "react";
import DefaultText from "./DefaultText";

const SomeComponent = props => (
  <View>
    <DefaultText>This should be in Raleway-Bold</DefaultText>
  </View>
);

export default SomeComponent;