我想知道是否有比使用if语句更好的有条件地传递道具的方法。
例如,现在我有:
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 />
);
}
}
});
没有if语句,有没有办法写这个?我正在按照JSX中的一种inif-if语句的方式思考:
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}
/>
);
}
});
总结:我试图找到一种方法来为其定义道具Child
,但是传递一个值(或做其他事情),使得Child
该道具的值仍从其Child
自身值中提取getDefaultProps()
。
如果定义了道具,则通过这些道具。否则道具没有通过。在另一个答案中,道具仍被传递,但是值
undefined
仍然表示道具正在传递。