我有一个track具有以下定义的道具:
track
propTypes: { track: React.PropTypes.shape({ cover: React.PropTypes.string, title: React.PropTypes.string, artist: React.PropTypes.string }) }
我希望track.cover获得默认值(如果未定义):
getDefaultProps: function() { return { track: { cover: 'placeholder.png' } } }
我有机会在视图级别做到这一点吗?是否getDefaultProps进行深层合并?还是需要在模型级别处理?
getDefaultProps
谢谢
getDefaultProps不会将传递的属性值与指定的返回值合并。如果该属性不存在,React将使用返回的对象getDefaultProps来初始化组件实例。
下面的代码例如产生:
Test Cover and
码:
var TrackItem = React.createClass({ render: function() { var track = this.props.track; return (<div>{track.cover} and {track.artist}</div>); }, getDefaultProps: function() { return { track: { artist: 'def artist' } } } }); var track = { cover: 'Test Cover' }; React.render(<TrackItem track={ track } />, mountNode);
另外,请注意,返回的对象在getDefaultProps组件的所有实例之间共享(参考)。