React原生自定义视图会话没有propType问题

时间:2018-03-23 01:44:00

标签: android reactjs react-native

我在Android应用中自定义了文本视图。而且我想用反应本机来使用它。所以我按照指南把它写成:

public class CustomizedTextViewManager extends SimpleViewManager<CustomizedTextView> {
...
}

它可以工作,但不能根据其内容调整textview的高度。我必须在render()中给出一个高度,否则textview将不会被展开。 我想要的是它可以根据其内容重置其高度,就像Rn textview所做的那样。

render(){
...
<CText style={styles.message} >{message.text}</CText> // CText is the CustomizedTextView
...
}

cosnt styles = ...({
...
message:{
        ...
        height: 100,
}
...
})

问题是,当textview中的内容很少时,它看起来很难看。 所以我查看ReactTextViewManager.java并重写我的视图,如:

public class CustomizedTextViewManager extends BaseViewManager<CustomizedTextView,ReactTextShadowNode> {
...
}

它显示: CustomizedTextView没有propType用于原生道具CustomizedTextView.allowFontScaling of native type boolean

如何解决?感谢。

1 个答案:

答案 0 :(得分:1)

修正了,我的不好。

该错误已暗示我应该设置'allowFontScaling'之类的道具。 起初我以为我在我的本地经理中缺少工具'allowFontScaling'。但它不应该。本机管理器已经是Rn文本管理器的子类,它应该实现所有道具。

最后在Rn调试器中我发现我应该在'CText.js'中的propTypes中添加Text.propTypes和View.proTypes

解决方案:

var iface = {
    name: 'GSMText',
    propTypes: {
        myProp1: PropTypes.string,
        myProp2: PropTypes.number,
        ...Text.propTypes, // must add this tow propTypes 
        ...View.propTypes, // other wise will see the red screen 
    }
}

希望它会有所帮助。