PropTypes.shape的默认道具类型应该是什么?

时间:2018-02-12 16:11:21

标签: javascript reactjs

说我有以下情况:

    static propTypes = {
        deployment: PropTypes.shape({
            getMetrics: PropTypes.func.isRequired,
            getRootMetric: PropTypes.func.isRequired
       }).isRequired,
}

我如何声明default进行部署?是不确定的还是[]?

3 个答案:

答案 0 :(得分:2)

您无法定义默认道具,或者您只能说{getMetrics: () => {}, getRootMetric: () => {}},因为它是一个对象。但是,required道具并不真正需要默认值,否则它们实际上并不是必需的。

举个例子: 您构建了一个带有config对象

的小型npm模块
  • 您可以根据需要定义此对象(模块将中断 没有用户提供)
  • 您可以提供默认值(如果未提供,则可以使用这些默认值)

所以,最后,由决定 如何提供默认值。

答案 1 :(得分:2)

由于道具是必需的,我认为没有理由定义默认值。默认值仅对具有合理默认值的可选道具有用,例如空列表[]或空对象{}

答案 2 :(得分:0)

我会使用类似下面的内容:

SomeComponent.defaultProps = {
  deployment: {
    getMetrics: () => {},
    getRootMetric: () => {}
  }
}

如果没有值会破坏您的应用,默认值就会很好。