2017-03-09 101 views
2

我是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 
 
    } 
 
});

上面的代碼不起作用,但它更多的是爲了獲得我想要做的事情。任何幫助深表感謝!

回答

2

創建一個類,它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://stackoverflow.com/questions/39336266/react-native-inline-styles-and-performance/39337449#39337449 - – FuzzyTree

相關問題