我刚刚升级到RN 0.18.1,我在应用程序中使用自定义字体的方式不再适用。有没有解决方法?
我曾经这样做过:
import React, {AppRegistry, Component, StyleSheet, Text, View, TextInput} from 'react-native';
var OldText = Text;
class NewText extends OldText {
defaultProps = {
customFont: false
};
render() {
var props = _.clone(this.props);
if (this.props.customFont) {
return super.render();
}
if (_.isArray(this.props.style)){
props.style.push({fontFamily: 'Quicksand-Regular'});
} else if (props.style) {
props.style = [props.style, {fontFamily: 'Quicksand-Regular'}];
} else {
props.style = {fontFamily: 'Quicksand-Regular'};
}
this.props = props;
return super.render();
}
};
React.Text = NewText;
现在在最后一行React.Text = NewText
上,我收到错误:“尝试分配给readonly属性”。有关如何使用自定义字体的任何想法吗?
答案 0 :(得分:0)
感谢@Ben Clayton的回答。 现在这样做的正确方法是创建一个新组件(NewText),它是React.Text的子类,并使用它代替整个应用程序。
我的NewText看起来像这样:
'use strict';
import React, {Text} from 'react-native';
import _ from 'lodash';
class NewText extends Text {
defaultProps = {
customFont: false
};
render() {
var props = _.clone(this.props);
if (this.props.customFont) {
return super.render();
}
if (_.isArray(this.props.style)){
props.style.push({fontFamily: 'Quicksand-Regular'});
} else if (props.style) {
props.style = [props.style, {fontFamily: 'Quicksand-Regular'}];
} else {
props.style = {fontFamily: 'Quicksand-Regular'};
}
this.props = props;
return super.render();
}
};
export default NewText;