【发布时间】:2019-01-31 19:43:37
【问题描述】:
我的项目是 clojureScript 试剂的 react native with expo,我需要自定义字体。我已经阅读了 expo 关于如何自定义字体的文档,并尝试按照 ClojureScript 方式的说明进行操作。
(expo自定义字体说明 https://docs.expo.io/versions/latest/guides/using-custom-fonts)
-
异步加载字体,这是加载异步函数
(defn load-font-async [name url] (.call (aget Font "loadAsync") Font (js-obj "Kanit" url))) -
在渲染之前调用加载异步函数。
(-> (expo/load-font-async "Kanit" (js/require "./assets/fonts/Kanit/Kanit-Regular.ttf")) (.then (fn [] (.registerComponent app-registry "main" #(r/reactify-component app-root))))))ps。将所有应用程序仅用于字体加载并不好,但我只需要确保字体已经加载。 (我需要重构)
-
我将字体家族样式放到文本组件中
[text {:style {:font-family "Kanit"}} "test"]
但文本组件找不到我已经声明和加载的字体系列“Kanit”。错误是
Unrecognized font family 'Kanit'
我现在一无所知,这个解决方案有什么问题?
ps。如果您需要更多信息,请告诉我,感谢所有回复:)
更新:根据 Chris Callwait 的建议,我将 expo/load-font-async 移至 app-root 并调度告诉文本组件,仅在加载字体时附加字体系列。像这样
(defn app-root []
(let [ ... ]
(expo/load-font-async [{"Kanit" (js/require "./assets/fonts/Kanit/Kanit-Regular.ttf")}]
(rf/dispatch [:app/set-font-loaded true]))
(r/create-class {:reagent-render ..... }))))
它仍然有同样的错误:( .
【问题讨论】:
标签: react-native fonts clojurescript expo reagent