I often use components that both have an internal className as well as an optional className passed in as a prop. The way I've been implementing this is either through (A) a local array that I construct and serialize into the className prop, or (B) through using React.addons.classSet.
A:
var classNames = ['my-component'];
if (this.props.className) {
classNames.push(this.props.className);
}
return <MyComponent className={classNames.join(' ')} />;
B:
var classes = {
'my-component': true
};
if (this.props.className) {
classes[this.props.className] = true;
}
return <MyComponent className={React.addons.classSet(classes)} />;
A is slightly less verbose, but harder to use if you have modifier classes as well (e.g. my-component--is-selected).
I'm suggesting allowing the className to be a string or an array. And if it is an array, React internals would compact and serialize the className array into a className string.
return <MyComponent className={['my-component', this.props.className]} />;
If this is a good idea, I could make an attempt at a PR.
I often use components that both have an internal
classNameas well as an optionalclassNamepassed in as a prop. The way I've been implementing this is either through (A) a local array that I construct and serialize into theclassNameprop, or (B) through usingReact.addons.classSet.A:
B:
A is slightly less verbose, but harder to use if you have modifier classes as well (e.g.
my-component--is-selected).I'm suggesting allowing the className to be a string or an array. And if it is an array, React internals would compact and serialize the className array into a className string.
If this is a good idea, I could make an attempt at a PR.