首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React:嵌套defaultProps深度合并

React:嵌套defaultProps深度合并
EN

Stack Overflow用户
提问于 2015-03-22 13:33:42
回答 1查看 5.9K关注 0票数 15

我有一个具有以下定义的track支柱:

代码语言:javascript
复制
  propTypes: {
    track: React.PropTypes.shape({
      cover: React.PropTypes.string,
      title: React.PropTypes.string,
      artist: React.PropTypes.string
    })
  }

如果未定义,我希望track.cover获得一个默认值:

代码语言:javascript
复制
getDefaultProps: function() {
    return {
      track: {
          cover: 'placeholder.png'
        }
      }
  }

我能在视图层做这个吗?getDefaultProps做深度合并吗?还是我需要在模型级别处理这个问题?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-22 14:13:38

getDefaultProps不将传递的属性值与指定的返回值合并。如果属性不存在,React将使用getDefaultProps返回的对象初始化组件实例。

例如,下面的代码生成:

代码语言:javascript
复制
Test Cover and

代码:

代码语言:javascript
复制
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中返回的对象是在组件(参考文献)的所有实例之间共享的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29194997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档