cha*_*ice 9 javascript jsx reactjs react-jsx react-native
我是React和React Native的新手.目前,对于每个组件,我将代码分成两个单独的文件:
index.js 对于所有React代码,和;styles.js 对于StyleSheet有没有办法将道具传递到外部StyleSheet?
示例
 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
  }
});上面的代码不起作用,但更重要的是要了解我正在尝试做的事情.任何帮助深表感谢!
Sye*_*Ali 15
我在样式表中发送 noFooter boolean prop
   <View style={styles.mainFooterCont(noFooter)}>
     <Text> Testing </Text>
    </View>
并接收它
  mainFooterCont: noFooter => ({
   flexDirection: 'row',
   justifyContent: 'space-between',
   alignItems: 'flex-end',
   paddingBottom: noFooter ? 0 : 20,
   paddingTop: Metrics.ratio(noFooter ? 0 : 5),
   }),
我宁愿将样式放在单独的文件styles.js中。内部styles.js:
export const styles = (props) => StyleSheet.create({
        icon : {
        color: props.iconColor,
        fontSize: props.iconSize
      }
    }
在主类中,您可以传递值
return (
    <Icon style={styles(this.props).icon} />
  );
或者,您可以直接将这些值设为
export const styles = (iconColor,iconSize) => StyleSheet.create({
    icon : {
    color: iconColor,
    fontSize: iconSize
  }
}
在你的主班里
return (
    <Icon style={styles(this.props,iconColor, 
this.props.iconSize).icon} />
 );
创建一个以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')
}
只需将样式表包装在一个函数中,您可以选择在其中传递道具。
代替:
const styles = StyleSheet.create({
  Title: { color: 'white' }
});
你做:
const styles = (props?: any) => StyleSheet.create({
  Title: { color: 'white' }
});
现在当你将它们添加到你的组件中时,而不是
style={styles.Title}
你做:
style={styles(propsObjectHere).Title}
由于这是可选的并且您没有道具可以通过,只需执行以下操作:
style={styles().Title}
PS 如果您出于某种原因不使用 TypeScript,请忽略该类型:P
| 归档时间: | 
 | 
| 查看次数: | 6546 次 | 
| 最近记录: |