我有一个具有以下定义的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做深度合并吗?还是我需要在模型级别处理这个问题?
谢谢
发布于 2015-03-22 14:13:38
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中返回的对象是在组件(参考文献)的所有实例之间共享的。
https://stackoverflow.com/questions/29194997
复制相似问题