React:嵌套的 defaultProps 深度合并
React: Nested defaultProps deep merge
我有一个 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
不会将传递的 属性 值与指定的 return 值合并。如果 属性 不存在,React 将使用由 getDefaultProps
编辑的对象 return 来初始化组件实例。
下面的代码例如产生:
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);
另外,请注意 return 在 getDefaultProps
中编辑的对象在一个组件 (reference) 的所有实例之间共享。
我有一个 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
不会将传递的 属性 值与指定的 return 值合并。如果 属性 不存在,React 将使用由 getDefaultProps
编辑的对象 return 来初始化组件实例。
下面的代码例如产生:
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);
另外,请注意 return 在 getDefaultProps
中编辑的对象在一个组件 (reference) 的所有实例之间共享。