Как мне перезаписать из <InnerBox />
значения defaultProps в моем компоненте высшего порядка?
имо. Вы не можете, потому что <InnerBox />
не знает, как это было вызвано.
И как только он получил его props
, он не знает, откуда они пришли; передается как реквизит в HOC или defaultProps или что-либо еще; по крайней мере, так должно быть.
Вы также предоставляете возможность передавать defaultProps
вместе с компонентом, который вы хотите обернуть для этого HOC
const wrapper = (component, defaultProps) => // your HOC
Или ваш HOC может использовать defaultProps обернутого компонента
//maybe like
const wrapper = (component) => {
return class {
static defaultProps = Object.assign({}, HOC.defaultProps, component.defaultProps);
}
}
Или вы или вы вообще не используете defaultProps
в этом HOC.
либо:
render(){
let props = {
...defaults,
...InnerBox.defaultProps,
...this.props
}
return <InnerBox {...props} />;
}
Или вы просто проходите через props
, не используйте HOC.defaultProps
, но теперь обернутые компоненты должны иметь дело с, возможно, неопределенными реквизитами.
В любом случае, вы должны исправить HOC.
InnerBox
не может манипулировать компонентом, в который он упакован. HOC должен учитывать компонент, в который он упакован.