在React Native中传递道具到外部样式表中?
问题描述:
我是React和React Native的新手。目前,我将代码分成两个单独的文件:在React Native中传递道具到外部样式表中?
-
index.js
所有的React代码和; -
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')
}
那的确没有工作,所以谢谢你。我用道具取代了传入的静态参数,使其更具动态性。但是,我不确定这是最优雅的解决方案。如果我有2个以上的话?我也不是100%确定分裂风格,反应代码是最好的,我只是尽力学习。再次感谢! – chapeljuice
@chapeljuice我个人更喜欢不分割样式,因为我发现它使得代码更具可读性,并且倾向于使用内联样式创建附加组件,同时拥有庞大的样式表,我必须查找样式 - 最终归结为偏好,但是,有单独床单的好处见https://stackoverflow.com/questions/39336266/react-native-inline-styles-and-performance/39337449#39337449 - – FuzzyTree