gxsshallot / react-native-pure-navigation-bar

A fully customizable navigation bar in React Native.
MIT License
96 stars 19 forks source link

添加自定义style时,会报图片没有color属性警告 #19

Closed fang130tao closed 4 years ago

fang130tao commented 5 years ago

<NaviBar style={{backgroundColor:'#ef5241',color:'white'}}>

报错:图片没color的属性 原因为:我传入的style是设置字体的样式,所以有color,但是查看源码,你把字体的样式和返回图片使用的同一个方法(_combineStyle ),而此方法都会合并this.props.style,所以字体的样式会加到图片上,所以就报错了 源码:<Image source={this.props.gobackImage} style={this._combineStyle('gobackImage')} /> _combineStyle = (key, innerStyle = undefined) => { const style = Array.isArray(innerStyle) ? innerStyle : [innerStyle]; return [styles[key], ...style, this.props.style]; };

建议:返回箭头图片的样式,单独用个style表示。或者在this._combineStyle()方法中,做个区分加载

gxsshallot commented 5 years ago

@fang130tao 我不太确定你使用的版本号,最新版1.4.9的函数如下:

_combineStyle = (key, innerStyle = undefined) => {
    const style = Array.isArray(innerStyle) ? innerStyle : [innerStyle];
    return [styles[key], ...style, this.props.style[key]];
};

这里this.props.style属性是一个对象,里面包含多个key(取值参见src/style.js里面的键),每一个key对应一个组件的样式。

对于每个视图,会把三种样式进行合并:

  1. 默认配置样式styles[key]
  2. 应用内部动态样式innerStyle
  3. 属性中的样式this.props.style[key]
summer88123 commented 4 years ago

no update