在React Native中传递道具到外部样式表中?

问题描述:

我是React和React Native的新手。目前,我将代码分成两个单独的文件:在React Native中传递道具到外部样式表中?

  1. index.js所有的React代码和;
  2. styles.js的样式表

有没有办法道具传递到外部的样式表?

实施例: index.js

render() { 
 
    const iconColor = this.props.color || '#000'; 
 
    const iconSize = this.props.size || 25; 
 

 
    return (
 
    <Icon style={styles.icon} /> 
 
); 
 
}

styles.js

const styles = StyleSheet.create({ 
 
    icon : { 
 
    color: iconColor, 
 
    fontSize: iconSize 
 
    } 
 
});

上面的代码不起作用,但它更多的是为了获得我想要做的事情。任何帮助深表感谢!

创建一个类,它iconColor通过和iconSize作为参数,并返回一个StyleSheet对象

// styles.js 

export default class StyleSheetFactory { 
    static getSheet(iconSize, iconColor) { 
     return StyleSheet.create({ 
      icon : { 
       color: iconColor, 
       fontSize: iconSize 
      } 
     }) 
    } 
} 

// index.js 

render() { 
    let myStyleSheet = StyleSheetFactory.getSheet(64, 'red') 
} 
+0

那的确没有工作,所以谢谢你。我用道具取代了传入的静态参数,使其更具动态性。但是,我不确定这是最优雅的解决方案。如果我有2个以上的话?我也不是100%确定分裂风格,反应代码是最好的,我只是尽力学习。再次感谢! – chapeljuice

+1

@chapeljuice我个人更喜欢不分割样式,因为我发现它使得代码更具可读性,并且倾向于使用内联样式创建附加组件,同时拥有庞大的样式表,我必须查找样式 - 最终归结为偏好,但是,有单独床单的好处见https://*.com/questions/39336266/react-native-inline-styles-and-performance/39337449#39337449 - – FuzzyTree