I would like to know if there is a better way to conditionally pass a prop than using an if-statement.
For example, right now I have:
var parent = React.createClass({
propTypes: {
editable: React.PropTypes.bool.isRequired,
editableOpts: React.PropTypes.shape({...})
},
render: function() {
if(this.props.editable) {
return (
<Child editable={this.props.editableOpts} />
);
} else {
// In this case, Child will use the editableOpts from its own getDefaultProps()
return (
<Child />
);
}
}
});
Is there a way to write this without the if-statement? I am was thinking something along the lines of a type of inline-if-statement in the JSX:
var parent = React.createClass({
propTypes: {
editable: React.PropTypes.bool.isRequired,
editableOpts: React.PropTypes.shape({...})
},
render: function() {
return (
<Child
{this.props.editable ? editable={this.props.editableOpts} : null}
/>
);
}
});
To wrap-up: I'm trying to find a way to define a prop for Child
, but pass a value (or do something else) such that Child
still pulls that prop's value from Child
's own getDefaultProps()
.
Child
as well? Also, did you mean to say<Child editableOpts={this.props.editableOpts} />
instead of<Child editable={this.props.editableOpts} />
? – Upireact-bootstrap-table
and that is the format that they use. I'm not sure theChild
code actually matters for what I'm asking, which is why I didn't include it. I'm really just looking for a way to optionally pass or not pass a prop toChild
that doesn't require having a massive amount of similar code in if-statements in theParent
. – Equi