有没有办法将默认值设置为prop的必需prop?

时间:2019-09-05 11:08:22

标签: javascript reactjs react-proptypes

我想将默认值设置为size prop,但是它是必需prop的子元素,因此出现错误。除了在eslint中禁用规则以外,是否有其他解决方法?

static propTypes = {
        widget: PropTypes.shape({
            config: PropTypes.shape({
                size: PropTypes.string
            }).isRequired
        }).isRequired,
    };
static defaultProps = {
        widget: PropTypes.shape({
            config: PropTypes.shape({
                size: 's'
            })
        })
    }

Eslint错误

defaultProp "widget" defined for isRequired propType.eslint(react/default-props-match-prop-types)

1 个答案:

答案 0 :(得分:0)

第一次观察,您可以像这样简单地设置默认值:

widget: {
config: {size: 's'}
}

第二,根据错误,没有必要为必填字段设置默认值,因为当调用者未通过defaultProps提供此字段时,必须并且必须设置默认值。

因此,也许将widget propTypes设置为可选,然后错误就不会出现,但是当通过prop传递无效形状时,形状就得以保留