我正在使用prop-types
检查类型并将默认值设置为我的组件道具。我的道具之一是显示SVG图像的React.Node的颜色。
Rating.defaultProps = {
iconColor: '#E5C100',
iconFull: <StarSharp />
iconEmpty: <StarBorderSharp />
iconHalfFull: <StarHalfSharp />
}
Rating.propTypes = {
iconColor: Proptypes.string,
iconFull: Proptypes.Node,
iconEmpty: Proptypes.Node,
iconHalfFull: Proptypes.Node
};
我想将iconColor
作为style={color: this.props.iconColor}
传递到我的render方法中,但是我不确定如何传递。我曾尝试寻找答案,但似乎找不到。
答案 0 :(得分:1)
如果我正确理解了您的问题,那么您应该能够通过以下方式计算样式:首先在组件的iconColor
中检查有效的props
,然后再使用默认的iconColor
由Rating.defaultProps
提供的道具。
为说明此技术,请考虑以下内容:
class Rating extends React.Component {
render() {
// If iconColor is undefined/falsey in this components props, then
// fallback to the default iconColor prop as specified in the
// Rating.defaultProps object
const style = {
color : (this.props.iconColor || Rating.defaultProps.iconColor)
};
// Return your JSX as needed, with locally computed style object
return (<div style={ style }>
...
</div>)
}
}
Rating.defaultProps = {
iconColor: '#E5C100',
iconFull: <StarSharp />
iconEmpty: <StarBorderSharp />
iconHalfFull: <StarHalfSharp />
}
Rating.propTypes = {
iconColor: Proptypes.string,
iconFull: Proptypes.Node,
iconEmpty: Proptypes.Node,
iconHalfFull: Proptypes.Node
};
答案 1 :(得分:0)
我找到了一种不依赖CSS继承的方法:
const iconFull = React.cloneElement(props.iconFull, {'style': props.iconStyles});
const iconEmpty = React.cloneElement(props.iconEmpty, {'style': props.iconStyles});
const iconHalfFull = React.cloneElement(props.iconHalfFull, {'style': props.iconStyles});
我将道具从iconColor
(字符串)更改为iconStyles
(对象),以使其具有更广泛的功能