React Native - 在这种情况下扩展一个可接受的类吗?

时间:2018-01-26 20:27:56

标签: reactjs react-native

所以,我已多次阅读:作文很好。延伸是邪恶的。

现在,我确实使用了composition,基本上是很多无状态组件和更高阶的组件,但是我确实有一个特殊情况,我扩展了一个类。

而不是从Component扩展的每个无状态组件,我从我自己的BaseComponent扩展,它基本上有一些我在所有组件中使用的辅助函数。

例如:

  • Google Analytics帮助
  • 记录器
  • 数据提升者
  • 配置
  • 存储
  • 主题管理
  • 操作

到目前为止,我对结果感到满意。我正在寻找任何理由让我真正打破这种模式以追求优秀的代码。

请不要“React推荐作文”答案。

1 个答案:

答案 0 :(得分:0)

那么为什么不简单地将HOC用于每一件呢?

在这种情况下使用HOC的最大好处是,您可以单独或作为一组来应用它们。您可以在如何切割/切割这些共享功能方面获得大量控制权。

作为一个简单的示例,您作为HOC的记录器可能看起来像;

const function loggerHoc(WrappedComponent) {
    return class extends Component {
        log(message) {
            console.log(message); //or other implementation
        }

        render() {
            <WrappedComponent log={this.log} {...this.props}/>;
        }
    }
}

现在,如果你有第二个这种风格的HOC用于分析,它们可以毫无问题地叠在一起;

ResultComponent = loggerHoc(analyticsHoc(ChildComponent));

您还可以编写一个函数来完成所有操作;

const function wrapWithAll(WrappedComponent) {
    return loggerHoc(
        analyticsHoc(
            WrappedComponent
        )
    );
}

或者您可以根据需要单独使用。