React更高阶组件(hoc)是否为上下文的道具提供名称?

时间:2017-10-30 02:23:33

标签: reactjs higher-order-components

由于HOC被假设用作mixins,可能与其他HOC一起使用,是否最好注入上下文虽然详细的prop名称(例如,以HOC的名称为前缀)?

我认为这应该被视为应该是最佳实践的问题。

因此,例如,对于注入类似窗口的行为的这个HOC更好:

简短的非上下文命名

@window
@otherMixin
class BasicView extends React.Component {
  render() {
    const {close, open} = this.props; //these are provided by @window
  }
}

VS 上下文命名(带前缀)

@window
@otherMixin
class BasicView extends React.Component {
  render() {
    const {windowClose, windowOpen} = this.props //these are provided by @window
  }
}

内容相关命名(嵌套)

@window
@otherMixin
class BasicView extends React.Component {
  render() {
    const {window} = this.props; //provided by @window
    window.open();
    window.close();

    /*  optionally we can destructure and work with the shorter 
     *  non-contextually named props while still maintaining 
     *  a declaration of their context to disambiguate
     */  
    //const {window: {open, close} } = this.props; 
  }
}

1 个答案:

答案 0 :(得分:2)

通常,库设计者为此提供react context和a hoc以订阅上下文对象。您可能需要使用上下文。但是,大多数图书馆设计师都受到上下文命名(嵌套)"因为那是上下文如何运作的。

这个问题实际上只是个人意见的问题,但如果你想要遵循其他图书馆的模式,你应该选择什么。

最后一点,我强烈建议不要出于明显的原因而不提供名为window的变量。