reactjs – React:嵌套的defaultProps深度合并

我有一个轨道道具,具有以下定义:
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不会将传递的属性值与指定的返回值合并.如果该属性不存在,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中返回的对象在组件的所有实例(reference)之间共享.

相关文章

react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接...
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc ...