我有一个track具有以下定义的道具:
propTypes: {
track: React.PropTypes.shape({
cover: React.PropTypes.string,
title: React.PropTypes.string,
artist: React.PropTypes.string
})
}
Run Code Online (Sandbox Code Playgroud)
如果未定义,我希望track.cover获取默认值:
getDefaultProps: function() {
return {
track: {
cover: 'placeholder.png'
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有机会在视图级别做到这一点吗?确实getDefaultProps做了深合并?或者我需要在模型级别处理此问题吗?
谢谢
getDefaultProps不会将传递的属性值与指定的返回值合并.如果该属性不存在,React将使用返回的对象getDefaultProps初始化组件实例.
例如下面的代码产生:
Test Cover and
Run Code Online (Sandbox Code Playgroud)
码:
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);
Run Code Online (Sandbox Code Playgroud)
另请注意,返回的对象在getDefaultProps组件的所有实例(引用)之间共享.
| 归档时间: |
|
| 查看次数: |
4792 次 |
| 最近记录: |